2

Slurpのソースを見て、どのように機能するかを理解したいと思いますslurp()

sub slurp { 
    local( $/, @ARGV ) = ( wantarray ? $/ : undef, @_ ); 
    return <ARGV>;
}

ファイルはどこで開いていますか?

4

3 に答える 3

6

perldocperlvarを参照ARGV$/てください。

Path :: Class:File::slurpも参照してください。

于 2010-10-25T11:03:02.480 に答える
5

ARGVはハンドルであり、ファイルは暗黙的に開かれています。

于 2010-10-25T11:04:57.273 に答える
1

このスニペットは、ファイル名を@ARGV. ファイルハンドルはARGV、 で見えるファイルを暗黙的に開きます@ARGV<>これは、diamond オペレータのデフォルトのファイルハンドルであるため、diamond オペレータには表示されないのと同じファイルハンドルです。

これは、以下と同じ Perl イディオムです。

 my $data = do { local( @ARGV, $/ ) = $file; <> };
于 2010-10-25T23:09:21.623 に答える