Perl5 の __DATA__ を seek したときの挙動
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use 5.010000;
use autodie ':all';
use Fcntl ':seek';
my $dat = join('', <DATA>);
seek(*DATA, 0, SEEK_SET);
my $dat2 = join('', <DATA>);
use Data::Dumper; warn Dumper($dat, $dat2);
__DATA__
HOGEHGOE
FUGAFUGA
とかするとわかるけど、*DATA はたんにスキャナがつかっていたファイルを、そのままひらいてるかのような挙動をする。__DATA__ の直後がファイルの先頭かのような挙動はしない。
__DATA__ が書いてあるときはファイルをひらきっぱにしているのか、*DATA がよばれたタイミングで __FILE__ をひらきなおすのか、についてはよくわからない。
Published: 2012-02-21(Tue) 06:29