ここに、MAINサブルーチンを宣言する短いPerl 6プログラムがあります。ファイルが必要な場合、Perl 6はMAINを実行する必要がありますか?
$ 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
た場合、私は何も出力を見ていない:
require
を使用する場合は210
しかし、私は出力を得る:
$ perl6 -I. -e 'require <main.pm6>'
Called as a program!
Synopsis 06を文字通りコンパイル単位は、直接ではなく、を必要とされることによって起動されたと言います。 require
が実行時に機能するので(S06はそれを除外しないにもかかわらず)何かが続いていますか?
私はRakudo Star 2016.07と2016.10で同じ動作をします。
ファイル拡張子を省略すると違いがありますか? – Christoph
私はこれを[email protected]に報告しようとしましたが、メールは恒久的なエラーでバウンスしました。私はそれをPerl NOCに報告しました。 –
@Christoph:requireのファイル拡張子がないと、ファイルが見つかりません。 –