__END__
または__DATA__
以下に書いた文字列は特殊ハンドルDATAで読み込むことができる。
use 5.12.0;
while (my $line = <DATA>) {
chomp $line;
say "1 $line";
}
__END__
111
222
333
# 出力結果
1 111
1 222
1 333
ファイルハンドルなのでpostionが最後のままなので2回は読めない
use 5.12.0;
use warnings;
while (my $line = <DATA>) {
chomp $line;
say "1 $line";
}
while (my $line = <DATA>) {
chomp $line;
say "2 $line";
}
__END__
111
222
333
# 出力結果
1 111
1 222
1 333
2回読むにはseek関数で位置をリセットする
use 5.12.0;
use warnings;
while (my $line = <DATA>) {
chomp $line;
say "1 $line";
}
seek DATA, 0, 0;
while (my $line = <DATA>) {
chomp $line;
say "2 $line";
}
__END__
111
222
333
出力結果
1 111
1 222
1 333
2
2 use 5.12.0;
2 use warnings;
2
2 while (my $line = <DATA>) {
2 chomp $line;
2 say "1 $line";
2 }
2 seek DATA, 0, 0;
2
2 while (my $line = <DATA>) {
2 chomp $line;
2 say "2 $line";
2 }
2 __END__
2 111
2 222
2 333
seek関数で0指定だとファイルの先頭を指してしまうのでtell関数で事前に取得しておく。
use 5.12.0;
use warnings;
my $pos = tell DATA;
while (my $line = <DATA>) {
chomp $line;
say "1 $line";
}
seek DATA, $pos, 0;
while (my $line = <DATA>) {
chomp $line;
say "2 $line";
}
__END__
111
222
333
出力結果
1 111
1 222
1 333
2 111
2 222
2 333