Go to the first, previous, next, last section, table of contents.

do

`do BLOCK'
do BLOCK は、BLOCK で指示されるコマンド群の 最後のコマンドの値が返る。ループ修飾子で修飾された場合は、 ループ条件をテストする前に一回実行される。 (他の文ではループ修飾子は条件テストを最初に行う。)
`do SUBROUTINE (LIST)'
do SUBROUTINE は、 sub で宣言された SUBROUTINE を実行し、 SUBROUTINE で評価された最後の expression の値を返す。 その名前のサブルーチンがない場合は、致命的エラーとなる (サブルーチンが存在するかどうか知るには、 defined 演算子を使用すれば良い。)。 LIST の一部として配列を渡す場合、 各配列の前に配列の長さを渡してもいいだろう。 (後で出てくる subroutines の章を参照。See section サブルーチン.) `do EXPR' との混乱を防ぐため、括弧は必要である。 SUBROUTINE は一スカラー変数であってもよい。 この場合実行すべきサブルーチンの名前はその変数から取り出される。 別の書き方として(そして望ましい書き方として)、 名前の前に & をつけてサブルーチンをコールしても良い。 例: &foo(@args) 引数を渡さないのであれば、括弧を使う必要はない。 括弧を省略した場合、サブルーチンには配列 @_ は渡されない。 & 形式は defined および undef に サブルーチンを指示するのにも使える。
if (defined &$var) { &$var($parm); undef &$var; }
`do EXPR'
do EXPR は、EXPR をファイル名として、 そのファイルの内容を perl スクリプトとして実行する。 その主たる使用法は、 perl サブルーチンライブラリからサブルーチンをインクルードすることである。
do 'stat.pl';
は、
eval `cat stat.pl`;
と全く同じである。 (より効率的で、より簡潔で、エラーメッセージでのファイル名は正しく、 カレントディレクトリになければ -I で指定されたライブラリを 全て検索する点が異なる。See section @INC : perl スクリプトを探す場所のリスト for @INC.) しかし、コールする毎に parse し直すのは同じなので、 ループの中で使用する際には -P オプション および #include を使った方がよい(若干立ち上げ時間が増えるが)。 #include の問題点は、cpp# がコメントであることを わかってくれないことである -- コメントだけからなる行には `;#' を 使うことになる。 注意:
次の 2 文は同等ではない
do $foo;	# ファイルを評価する
do $foo();	# サブルーチンを呼ぶ
ライブラリルーチンをインクルードするには `require' オペレータがよい。 See section require.

Go to the first, previous, next, last section, table of contents.