Migration Perl'的替代方案;s<&燃气轮机;在拉库?
在这里学习我在Raku(neéPerl 6)的方法,非常好。但是我非常怀念Perl 5的魔力,在这里您可以:Migration Perl'的替代方案;s<&燃气轮机;在拉库?,migration,raku,Migration,Raku,在这里学习我在Raku(neéPerl 6)的方法,非常好。但是我非常怀念Perl 5的魔力,在这里您可以: my $x = <>; print $x; while(<>) { print join(':', split); } my$x=; 打印$x; while(){ 打印联接(“:”,拆分); } (将下一个输入行读入$x,循环其余部分;输入来自名为input或standard input的文件(如果没有提供文件)。“Perl5到6”教程/迁移指南/。。。只
my $x = <>;
print $x;
while(<>) {
print join(':', split);
}
my$x=;
打印$x;
while(){
打印联接(“:”,拆分);
}
(将下一个输入行读入$x
,循环其余部分;输入来自名为input或standard input的文件(如果没有提供文件)。“Perl5到6”教程/迁移指南/。。。只需谈论slurp
ing整个文件,或open
ing单个文件的名称。我找不到神奇的“按顺序从命名文件中获取输入”
我要魔法回来 你有足够的魔法吗
sub MAIN( Str $file where *.IO.f )
{
.say for $file.IO.lines.map: *.comb.join(':');
}
您正在寻找的功能基本上是存在的。此脚本:
my $x = get();
say "First: $x";
for lines() {
.say
}
给定这些输入文件:
$ cat foo
foo line 1
foo line 2
$ cat bar
bar line 1
bar line 2
调用时将作为:
raku script.p6 foo bar
产生输出:
First: foo line 1
foo line 2
bar line 1
bar line 2
如果没有文件,它还将从中的$*获取输出。唯一不存在的是对
的单一替换,因为这将取决于类似于wantarray
的功能,这与多重分派不兼容(Raku认为多重分派更有用)
实现了get
和行
的零arg候选,这是一个文件句柄,提供了从参数列表或$*中获取文件的功能,这意味着可以将其传递给任何需要文件句柄的代码。这很酷,OP应该尝试一下,但在一些方面不同。请参阅jnthn的答案,了解如何模拟
的行为,并注意,raku的.comb
没有参数会将字符串拆分为单个字符,而Perl的没有参数的拆分
是。在raku中拆分(/\s+/)
。拆分.split
的替代方法是.words
——为什么,天哪,我是不是一直忘了单词方法?或者,学究式的:raku script.raku foo bar.;-)