[ Perl 6 ] 被取代的鉆石操作符(<>)
阿新 • • 發佈:2017-09-12
style avs qup ddd nbsp hidden idv memory keyword
[ Perl 6 ] 被取代的鉆石操作符(<>)
There is more than one way to do it.
- Perl 5中,如果要逐行讀取一個文件的內容,你可能會寫出下面的代碼
while (<>) {
chomp;
print "It was $_ that I saw.\n";
}
$ perl myscript.pl in
- 但是在Perl 6中,鉆石操作符
<>
已經不再被支持,現在可以用下面的代碼來完成上面的功能
for lines() {
.chomp;
say "It was $_ that I saw." ;
}
$ perl6 myscript.pl6 in
- 這裏涉及到一個問題,那就是Perl 6的
for
循環是惰性的,也就是說當逐行讀取一個文件時,它不會先一次性把整個文件讀進緩存,這在Perl 5中是一個常見的問題,如果在Perl 5中使用for讀取一個文件,通常會因為Memory Out而崩潰 - 對Perl 6程序的解釋:
lines
函數的默認參數是$*ARGFILES
,也就是命令行文件參數.chomp;
等同於$_.chomp;
,在Perl 6中,chomp;
被認為是以空參數調用chomp
方法
[ Perl 6 ] 被取代的鉆石操作符(<>)