2

我查看了Slurp的来源,我很想了解它是如何slurp()工作的:

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

文件甚至在哪里打开?

4

3 回答 3

6

请参阅perldoc perlvar中的ARGV和。$/

另请参阅Path::Class:File::slurp

于 2010-10-25T11:03:02.480 回答
5

ARGV是一个句柄,文件已被隐式打开。

于 2010-10-25T11:04:57.273 回答
1

此代码段将文件名放在@ARGV. ARGV文件句柄隐式打开它在@ARGV. 这是我们在菱形运算符中看不到的相同文件句柄,<>因为它是该运算符的默认文件句柄。

这与 Perl 的成语相同:

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