at posts/single.html

5年ぶりにPerlで書いてみた - 教養としての Perl 言語

2000年ごろはラクダ本(まだ1冊だった)を読みながら Perl を書いていたけど、最近はずっと Ruby ばかり。 でも、Deliciousとはてなブックマークの同期をきっかけに、 Perl も最低限は読み書きできたほうがいいと思った。 というわけで、5年ぶりにPerlを書く上での覚書。 調べながら書いているので間違いがあるかも。

情報源

この5年でPerlのトレンドもすっかり変わっているので、情報源を抑えておく。

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
  • ハッシュや配列とリファレンス
  • オブジェクト指向