Perlではcgiと連動してWEBアプリケーションを作るケースが多いですが、元々テキストの編集や置換が非常に便利です。
例えば、あるディレクトリにある特定のファイル名(正規表現使用可)だけを抽出する場合、下記コマンドで書けます。
1 2 3 4 5 6 |
my $dir = $'/var/xxx'; my @files = glob("$dir/*"); #特定の規則性にマッチするファイル名だけを取得する @files = grep{-f $_ && $_ =~ /cpu_\d{8}.log/ } @files |
$_は右の@filesが展開された変数です。
また上記を合わせ
1 |
@files = grep{-f $_ && $_ =~ /cpu_\d{8}.log/ } glob("$dir/*"); |
と書くこともできます。
Perlは他にワンライナーといって一行で下記のような処理をすることができます。
1 |
perl -ne "print $_ if $_=~ /abc/"; in.txt > out.txt |
「in.txtファイルを開き一行ずつ読み込んでabcがあればout.txtに出力」という処理になります。
neはオプションで
e・・ワンライナーの実行
n・・一行ずつ処理する
という意味になります。
またif文を後ろにおくなどは通常のプログラムの中でも使えます。
1 |
print "hoge" if ( $a >10 ) ; |
参考
「業務に役立つPerl」