Perlで定数定義とファイルの行数カウント

Perlで多次元配列を作るときなどに予め入力ファイルの行数を知りたい、その行数を定数として保持しておきたいときがある。そのようなときは以下のようにしている。

#/usr/bin/perl
use Readonly;

my $filename = 'foo';
Readonly my $LEN => int(`wc $filename | cut -d' ' -f2`);

定数定義にはuse constantを使ってもいいがダブルクォーテーション内で変数展開できないなどのデメリットもあるため、Readonlyモジュールの方が便利なときもある。ただしReadonlyは最初からインストールされているわけではないので

# cpan
cpan> install CPAN
cpan> install Readonly

としておく必要がある。