Todo está en perldoc -f open
:
Si se omite EXPR, la variable escalar del mismo nombre que el FILEHANDLE contiene el nombre del archivo. (Tenga en cuenta que las variables léxicas - las declaradas con "mi" - no va a funcionar para este propósito ; así que si usted está utilizando "mi", especifique EXPR en su llamada a abrir.)
Tenga en cuenta que esta no es una muy buena manera de especificar el nombre del archivo. Como puede ver, tiene una restricción estricta en el tipo de variable en el que se encuentra y, por lo general, es mejor evitar la variable global que requiere o el identificador de archivo global que abre.
El uso de un gestor de archivo léxica mantiene su alcance de control, y las manijas de cierre automático:
open my $fh, '<', "filename" or die "string involving $!";
Y si usted está tomando ese nombre de archivo desde la línea de comandos, lo que pueda arrancar ese open
o cualquier manejar por completo, y usar el operador simple <>
para leer desde argumentos de línea de comandos o STDIN. (Consulte los comentarios para obtener más información al respecto)
Este estilo de Perl es ** manera ** obsoleto. Sería mucho mejor que abriera mi archivo $, "<", $ ARGV [0] ... o mejor aún, no llame en absoluto y simplemente lea desde ARGV.(Perl asume que los argumentos son archivos que se deben abrir para la entrada, y los abre automágicamente). –
Se ha documentado que la apertura unaria solo funciona en las variables del paquete. – tchrist
@William: ¿No debería haber una codificación allí? 'open (FH," <: encoding (UTF-8) ", $ pathname)' – tchrist