プログラミング工房 > Perl > Tips > 

小ネタいろいろ

コマンドライン引数の取得
ファイル分割(スクリプト挿入)


コマンドライン引数の取得


 スクリプトに渡されたコマンドライン引数は特殊配列@ARGVに格納される。@ARGVをスカラーコンテキストで評価すると引数の数を取得できる。@ARGVには実行されるスクリプトのパスは含まれない。


ファイル分割(スクリプト挿入)


 別ファイルに保存したスクリプトを読み込んで実行するには、以下の3つの方法がある。下のものになるほど使いやすい。

・eval
・do
・require

eval


open SUB_SCRIPT, "sub_script.pl" or die "sub_script.pl: $!";
undef $/;
my $sub_script = <SUB_SCRIPT>;
close SUB_SCRIPT;
eval $sub_script;
die $@ if $@;

特徴:

 スクリプトを一度変数に読み込まなければならないため、単なるスクリプト分割の方法として利用するには不便。

do


do "sub_script.pl";
die $@ if $@;

特徴:

 スクリプトを変数に読み込む必要はないが、同じファイルに対して複数回実行するとその度に読み込みを行うため、内容がサブルーチンなどの場合、perl起動時に-wオプションを指定していると再定義警告が表示されてしまう。

require


require "sub_script.pl";

特徴:

 一つのプログラム内で同じファイルに対して複数回実行されると2回目以降は無視されるので、サブルーチンなどの再定義警告を心配する必要がない。

 対象スクリプトの構文エラーチェック(die $@ if $@;)を行う必要がない。(自動で実行される)

 対象スクリプトファイルの末尾に「1;」という行を記述する必要がある。