我查看了Slurp的来源,我很想了解它是如何slurp()
工作的:
sub slurp {
local( $/, @ARGV ) = ( wantarray ? $/ : undef, @_ );
return <ARGV>;
}
文件甚至在哪里打开?
请参阅perldoc perlvar中的ARGV
和。$/
ARGV
是一个句柄,文件已被隐式打开。
此代码段将文件名放在@ARGV
. ARGV
文件句柄隐式打开它在@ARGV
. 这是我们在菱形运算符中看不到的相同文件句柄,<>
因为它是该运算符的默认文件句柄。
这与 Perl 的成语相同:
my $data = do { local( @ARGV, $/ ) = $file; <> };