Posted at

Perl でアンダースコアのみの変数をみた

More than 3 years have passed since last update.

たまたま のソースを読んでいたら、_ のみの変数名がでてきた。

sub _content_sub {

my $filename = shift;
my $stat = stat($filename);
my $remaining = $stat->size;
my $blksize = $stat->blksize || 4096;

croak "$filename not a readable file with fixed size"
unless -r $filename and ( -f _ || $remaining ); # ココ!
my $fh = IO::File->new( $filename, 'r' )
or croak "Could not open $filename: $!";

はて、こんな文法あったっけ?と思って調べると、例えばここ には、

The special filehandle used to cache the information from the last stat, lstat, or file test operator.

という説明がある。直前のファイルテスト演算子でテストしたファイルを _ で呼び出せるとのこと。

if -f $filename && -r $filename && -s $filename


if -f $filename && -r _ && -s _