Как работает модуль Perl's Slurp?
Я взглянул на источник Slurp, и я хотел бы понять, как slurp()
Работа:
sub slurp {
local( $/, @ARGV ) = ( wantarray ? $/ : undef, @_ );
return <ARGV>;
}
Где файл даже открыт?
3 ответа
Решение
Увидеть ARGV
а также $/
в perldoc perlvar.
Смотрите также Path:: Class: File:: slurp.
Этот фрагмент помещает имя файла в @ARGV
, ARGV
filehandle неявно открывает файлы, которые он видит в @ARGV
, Это тот же дескриптор файла, который мы не видим в операторе diamond <>
так как это дескриптор файла по умолчанию для этого оператора.
Это та же идиома Perl, что и:
my $data = do { local( @ARGV, $/ ) = $file; <> };