5部 関数リファレンス

do

do EXPR



EXPRの値としてファイル名を指定すると、そのファイルの中身をPerlスクリプトとして実行します。主に、Perlのサブルーチンライブラリからサブルーチンをインクルードするために用います。

# stat.pl をスクリプトとして実行する
# 普通は require を使った方が効率が良い
do "stat.pl";

# 上記doと同じ動作をします
scalar eval `cat stat.pl`;

上記のように、scalar eval `cat stat.pl`でもdoと同じことができますが、doのほうが効率的でです。doは、エラーメッセージでファイル名がわかり、カレントディレクトリでファイルが見つからなかったときに@INCライブラリを検索する、ファイルがあったときに%INCを更新する、といった処理を行います。

ライブラリモジュールのインクルードには、use演算子やrequire演算子を使った方が良いでしょう。これらは自動的にエラーをチェックして、問題があれば例外を発生させます。

doの使い方

doをプログラム設定ファイルを読み込むのに使う際の簡単なサンプルです。

for $file ("defaults.rc","$ENV{HOME}/.prc") {
unless ($return = do $file) {
warn "couldn't parse $file: $@" if $@;
warn "couldn't do $file: $!" unless defined $return;
warn "couldn't run $file" unless $return;
}
}

関連記事