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; <> };