È tutto in perldoc -f open
:
Se ESPR viene omessa, la variabile scalare dello stesso nome il FILEHANDLE. (Si noti che lessicali variabili - quelle dichiarate con "my" - non funzionerà per questo scopo, così se si sta utilizzando il "mio", specificare ESPR nella chiamata per aprire.)
Si noti che questo non è un ottimo modo per specificare il nome del file. Come puoi vedere, ha un forte vincolo sul tipo di variabile in cui si trova, e la variabile globale che richiede o il filehandle globale che apre di solito è meglio evitare.
Utilizzando un filehandle lessicale mantiene la sua portata in controllo, e maniglie chiusura automatica:
open my $fh, '<', "filename" or die "string involving $!";
E se si sta prendendo che il nome del file dalla riga di comando, si potrebbe fare a meno che open
o qualsiasi gestire completamente e utilizzare l'operatore normale <>
per leggere dagli argomenti della riga di comando o STDIN. (vedere i commenti per ulteriori informazioni al riguardo)
fonte
2011-02-08 13:44:18
Questo stile di Perl è ** modo ** obsoleto. Sarebbe molto meglio fare aprire il mio $ file, "<", $ ARGV [0] ... o meglio ancora non chiamare affatto aperto e solo leggere da ARGV.(Perl presuppone che gli argomenti siano file da aprire per l'input e li apre automaticamente per te.) –
Unario aperto è documentato per funzionare solo sulle variabili del pacchetto. – tchrist
@ William: Non dovrebbe esserci una codifica lì? 'open (FH," <: encoding (UTF-8) ", $ pathname)' – tchrist