5年ぶりにPerlで書いてみた - 教養としての Perl 言語
2000年ごろはラクダ本(まだ1冊だった)を読みながら Perl を書いていたけど、最近はずっと Ruby ばかり。 でも、Deliciousとはてなブックマークの同期をきっかけに、 Perl も最低限は読み書きできたほうがいいと思った。 というわけで、5年ぶりにPerlを書く上での覚書。 調べながら書いているので間違いがあるかも。
情報源
この5年でPerlのトレンドもすっかり変わっているので、情報源を抑えておく。
- Perl-users.jp … ポータル。最近のサイトなので、トレンドを抑えられそう。
- モダンなPerl入門(初心者向け) が充実するといいなぁ。
- Perl入門~サンプルコードによるPerl入門~ … リファレンスに最適。こんな充実した内容が Web で読めるとは。
- Perl 5.8.x における日本語コード変換のメモ … Encode.pm を知らないと何もできないのでメモ。
Hello World
入出力を把握するために、 grep のスクリプトを書く。
#!/usr/bin/env perl use strict; use warnings; use Encode; # ソースコードをUTF-8で記述する use utf8; # 標準出力にUTF-8で出力する binmode STDOUT, ':utf8'; my $file = shift; my $regex = shift; open(my $f, "<:encoding(utf-8)", $file) or die $!; while (my $line = <$f>) { if ($line =~ /$regex/) { print $line; } }
use strict; は昔から使っているとおり。 -w でなくて use warnings;らしいので、 -w の代わりに use warnings; も指定する。 これから書くソースはUTF-8なので、 use utf8 も指定し、エンコーディングのために use Encoding する。 標準出力にもUTF-8で出力するので、 binmode STDOUT, ':utf8'; を指定。 ここまではスクリプトを書くときのお約束になりそう。
あとは、 open 時にエンコーディングを指定できるようになったところかな。 昔は open 後にJcode.pm で変換してた。 慣れれば Encode.pm のほうが便利そう。
後で書く
- Data::Dumper
- ハッシュや配列とリファレンス
- オブジェクト指向