1. 程式人生 > >[ Perl 6 ] 被取代的鉆石操作符(<>)

[ Perl 6 ] 被取代的鉆石操作符(<>)

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 ] 被取代的鉆石操作符(<>)