#!/usr/bin/perl
use 5.010;
while (my $name = <data>) {
chomp $name;
say "Hello, $name!";
}
__DATA__
Peter
Jack
Obama
問題來了,如果DATA的內容需要讀取不只一遍的時候,你沒辦法直接用seek回到DATA的最前端。這是因為DATA其實是整個script檔案的filehandle,當你第一次使用它的時候,其offset其實設在__DATA__這列之後。所以若需要讀取DATA兩遍以上,需要先以
my $pos = tell DATA;
紀錄DATA一開始的position,然後在讀取第二遍之前,以
seek DATA, $pos, 0;
回到這個filehandle原先的位置。