这是一个简短的 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
从程序内部进行相同的操作,我看不到任何输出:
$ 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 的行为相同。