Как работает модуль Perl's Slurp?

Я взглянул на источник Slurp, и я хотел бы понять, как slurp() Работа:

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

Где файл даже открыт?

3 ответа

Решение

Увидеть ARGV а также $/ в perldoc perlvar.

Смотрите также Path:: Class: File:: slurp.

ARGV является дескриптором, файл был открыт неявно.

Этот фрагмент помещает имя файла в @ARGV, ARGV filehandle неявно открывает файлы, которые он видит в @ARGV, Это тот же дескриптор файла, который мы не видим в операторе diamond <> так как это дескриптор файла по умолчанию для этого оператора.

Это та же идиома Perl, что и:

 my $data = do { local( @ARGV, $/ ) = $file; <> };
Другие вопросы по тегам