我正在尝试使用此功能列出目录中的所有文件:
sub list-directory($dir = '.') {
    my @todo = $dir.IO.dir;
    @todo = @todo.duckmap( -> $_ where $_.d { @todo.push($_.IO.dir); } );
    @todo = @todo.duckmap( -> $_ where IO {.Str} );
    return @todo;
}
第一个duckmap是列出所有子目录,第二个(尚未完成)是将IO对象转换为Str。
有人知道第二个为什么不停止吗?
正如Hakon所说,这是一个无限循环。这是固定的代码:
sub list-directory($dir = '.') {
    my @todo = $dir.IO.dir;
    @todo = @todo.duckmap( -> $_ where $_.d { @todo.push($_.IO.dir); $_; } );
    grep { !.IO.d }, @todo.List.flat;
    @todo.map({.Str});
}