Slurpのソースを見て、どのように機能するかを理解したいと思いますslurp()。
sub slurp {
local( $/, @ARGV ) = ( wantarray ? $/ : undef, @_ );
return <ARGV>;
}
ファイルはどこで開いていますか?
perldocperlvarを参照ARGVし$/てください。
Path :: Class:File::slurpも参照してください。
ARGVはハンドルであり、ファイルは暗黙的に開かれています。
このスニペットは、ファイル名を@ARGV. ファイルハンドルはARGV、 で見えるファイルを暗黙的に開きます@ARGV。<>これは、diamond オペレータのデフォルトのファイルハンドルであるため、diamond オペレータには表示されないのと同じファイルハンドルです。
これは、以下と同じ Perl イディオムです。
my $data = do { local( @ARGV, $/ ) = $file; <> };