Я хочу сделать modulino (файл, который может работать как модуль или script) в Perl6.
Следующий код "обрабатывает" имена файлов из командной строки:
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
Итак, как я могу построить modulino в Perl6?
Я использую Perl6, работающий на MoarVM из выпуска Rakudo Star в январе 2015 года.
UPDATE:
Когда я пытаюсь обернуть модуль в фигурные скобки:
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'?