2009年8月20日木曜日

Minimal Perl

現在、2本の論文を同時に執筆中で忙しいにもかかわらず、そういう時に限ってやりたい事がたくさん思いついてしまいます。この本もその一つ。GMUの図書館で本のタイトルを見かけたときに「これだ!」と思い、つい手にとって読んでしまいました。「Minimal Perl」です。Perlを便利なワンライナーとして使う
Perlは、本来とても高機能な、オブジェクト指向もサポートしたプログラミング言語です。世の中には、そのような高機能を詳細に説明したPerl本がたくさん出版されていますが、この本はそのタイトルが示すように、それらの本とは一線を画すユニークな本です。

最近私はEclipseのようなIDEを使うようになり、使う頻度が低くなってきてしまいましたが、それでもやはりgrep, find, sed, awkといったUnixコマンドはとても便利で手放せません。Perlも時々ちょっとした複雑な処理に使ってきました。ただ、特にsedを使って大量ファイルに対してささっと一括文字列置換をしたりする際、「Perlの方が強力な正規表現をサポートしてるし、もうちょっと複雑な処理も出来て良さそうなんやけど、ワンライナーで手軽に済ませたいからなあ」なんてよく感じていました。また、Perlの文法は複雑なのでちょっと使っては忘れてしまっていて、なかなか完全にマスターできていません。

この「Minimal Perl」は、まさにそのような私の想いに応えてくれる本です。大きく2部構成になっていて、Part 1がまさにgrep, find, sed, awkの強力版としてPerlを使う方法を解説しています。Part 2はより複雑なスクリプトの書き方を解説しています。私はPart 1だけ読みました。

Perl as a (better) grep command
grepの代わりになる、Perlのワンライナーの書き方が紹介されています。以下は基本形です。
perl -wnl -e '/RE/ and print;' file file2 ...
マッチしない部分を表示する(grep -v)には、
perl -wnl -e '/RE/ or print;' file file2 ...

Perl as a (better) sed command

以下が基本形です。
perl -wpl -e 's/RE/replacement/g;' file file2 ...
以下は、ファイルを便利に直接書き換えるワンライナー。
perl -i.bak -wpl -e 's/RE/replacement/g;' file file2 ...

Perl as a (better) awk command

特定のフィールドを表示する例は
perl -wnla -e '($fname, undef, $lname)=@F; print "$lname\t$fname";' file

Perl as a (better) find command

findの場合は、完全にPerlで入れ替えるのではなく、以下のようにPerlでfindを補強するテクニックが紹介されています。
find . -type f -print | perl -wnla -e '-T and /RE/ and print;'

この本は手元に置いておきたい
上記のように、この本には豊富なテクニックが例とともに示されていて、手元に置いておきたい本です。図書館で借りた本だったので、とりあえず、可能な限りGoogle Docにメモっておきました。(今は貧乏学生なので。。。)

0 件のコメント: