Perlの基礎($file(),chdir,パターンマッチ,sort)

Perlを使ってテキストの加工をよくする。と言っても,Perlのことはほとんどわかっていない。いつも適当に,思い通りの結果が出ればOKという処理。だから基礎からなっていない。
以前にも少し記録したが,そうだったんだ,と思ったときにここに書いておくことにしたい。

カレントディレクトリのファイルリストを取得して,そこにある特定の拡張子のファイルに処理をしたいことがある。こんなふうにやってみた。

 foreach $file (<*>) {
  @filename = split(/\./, $file);
  if ($filename[1] eq "tex") {
  …
  }
 }

カレントディレクトリの移動する必要があった。そのものずばりだった。

 chdir "…";

最初は次のように勘違いして,うまく移動できなくて困っていた。

 system("cd …");

次にパターンマッチ。たとえば,全角カタカナの1字以上の連続文字列を抽出する。

 while ($input = ) {
  chomp($input);  こんな回りくどい記述は不要かも。
  $_ = $input;  検索の対象文字列は$_だそうです。
  @match = /[ア-ン]+/g;  正規表現は何年も前にsedでよく書いた。
 }

最後に並べ替え。配列を用意して,その要素(文字列)を並べ替える。並べ替え方はサブルーチンをつくる必要があるという。よくわからないが,言われるがままに。^_^;

 @sortedmatch = sort ascend @match;
 sub ascend {
  $a cmp $b;
 }