• ベストアンサー

grepとsort

my $files = readdir(DIR); @files = grep { !/^\.\.?$/; } @files; 「.」と「..」の除去 @files = sort { $a cmp $b; } @files; ファイル名のソート この2文についてですが、grepとsortに関する文法がよくわかりません。 grepって、除去するコマンドなんでしょうか? sortでは、$a cmp $bが何を意味しているのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

grepは配列から指定条件に合う要素を抽出する関数ですが、抽出条件が否定形なので、除去する動きになってます。 cmpは文字列の大小関係を求める演算子です。関数sortは、配列の要素を、$aと$bに入れて比較しながら、ソートを行います。 詳しくは、Perlに標準添付されているドキュメントperlfuncをご覧下さい。

参考URL:
http://www.perldoc.com/
msndance
質問者

お礼

ありがとうございます。理解できました。実は僕、パールを動かせるUNIX環境をもっていません。 趣味でUNIXを全体的に説明している分厚い本を読んでいるのです。 で、本のうち2章分がパールの説明にあてられているのですが、grepとsortみたいな一つ一つの文に対する詳細な説明があまりなされていないものですから・・・すみません。

関連するQ&A