7

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'?
4

1 に答える 1