6

以下は、 MAINサブルーチンを宣言する短い Perl 6 プログラムです。プログラムを直接実行した場合にのみ出力が表示されます。

$ cat main.pm6
sub MAIN { say "Called as a program!" }

プログラムを直接実行すると、出力が表示されます。

$ perl6 main.pm6
Called as a program!

モジュールとしてロードすると、出力が表示されません。

$ perl6 -I. -Mmain -e "say 'Hey'"
Hey

useプログラム内からの場合も同じですが、出力が表示されません。

$ perl6 -I. -e 'use main'

しかし、 を使用するrequireと、次の出力が得られます。

$ perl6 -I. -e 'require <main.pm6>'
Called as a program!

Synopsis 06は文字通り、コンパイル単位が必須ではなく直接呼び出されたことを示しています。実行時に動作するため、何か他のことが起こっていますかrequire(S06 はそれを除外しませんが)?

Rakudo Star 2016.07 と 2016.10 で同じ動作をします。

4

2 に答える 2