PerlスクリプトのSyntax check

#!/opt/local/bin/perl
use strict;
use warnings;

print "hoge\n";

これをperlコマンドに渡すと普通に実行される。

$ perl hoge.pl
hoge


perlコマンドで"-c"オプションを使うと、実行されずに文法チェックが行われる。

$ perl -c hoge.pl 
hoge.pl syntax OK


コマンドラインオプションで指定しなくても、シェバング行で指定すれば同様の効果に。

#!/opt/local/bin/perl -c
use strict;
use warnings;

print "hoge\n";
$ perl hoge.pl
hoge.pl syntax OK


ちなみに、"perldoc perlrun"によると、"BEGIN", "CHECK", "use"のブロック内のコードは実行されてしまうらしい。

#!/opt/local/bin/perl -c
use strict;
use warnings;

BEGIN {
    print "BEGIN\n";
}

print "hoge\n";
$ perl hoge.pl
BEGIN
hoge.pl syntax OK


あとは、Bパッケージの"minus_c"関数を"BEGIN"ブロック内で呼ぶと、"-c"で実行したのと同じ効果になるらしい。

#!/opt/local/bin/perl
use strict;
use warnings;

use B qw(minus_c);

BEGIN {
    minus_c;
}

print "hoge\n";
$ perl hoge.pl
hoge.pl syntax OK