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 で modulino を構築するにはどうすればよいでしょうか?
2015年1月リリースのらくどうスターから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'?