我想在 Perl6 中制作一个modulino(一个可以作为模块或脚本运行的文件)。
以下代码从命令行“处理”文件名:
sub MAIN ( *@filenames )
{
for @filenames -> $filename
{
say "Processing $filename";
}
}
保存它,因为main.pm6
我可以运行它并且它可以工作:
perl6 main.pm6 hello.txt world.txt
Processing 'hello.txt'
Processing 'world.txt'
所以,我希望这是一个模块,这样我就可以添加功能并简化测试。但是,当我向其添加module
声明时,它不再输出任何内容:
module main;
sub MAIN ( *@filenames )
{
for @filenames -> $filename
{
say "Processing '$filename'";
}
}
这导致没有输出:
perl6 main.pm6 hello.txt world.txt
那么,如何在 Perl6 中构建模数?
我正在使用从2015 年 1 月发布的 Rakudo Star开始在MoarVM上运行的 Perl6 。
更新:
当我尝试将模块包装在大括号中时:
module main
{
sub process (@filenames) is export
{
for @filenames -> $filename
{
say "Processing '$filename'";
}
}
};
sub MAIN ( *@filenames )
{
process(@filenames)
}
我也收到错误:
===SORRY!=== Error while compiling main.pm6
Undeclared routine:
process used at line 14. Did you mean 'proceed'?