Questo script:
#!/usr/bin/perl
use strict;
use warnings;
my ${fh};
open($fh, '<', "some_file.txt") or die "fail\n";
while(my $line = <${fh}>) {
print $line;
}
close $fh;
uscite:
GLOB(0x5bcc2a0)
Perché questo è l'uscita?
Se cambio a, verrà stampato some_file.txt
riga per riga come previsto. Ho pensato che le parentesi potevano essere usate per delimitare i nomi delle variabili e che sarebbe lo stesso di my $var
.
Esistono altri scenari in cui l'aggiunta di {}
a un nome di variabile causa problemi?
Ho provato su Perl 5.8.8 su Red Hat e Cygwin Perl 5.14.
Ci sono molti scenari in cui l'aggiunta di '{}' cambia l'analisi, ad es. '" $ foobar "' vs. '" $ {foo} bar "', '" $ foo :: bar "' vs. '" $ {foo} :: bar "', '" $ foo's bar "' vs. '" La barra di $ {foo} "', '" $ pippo [0] "' vs. '" $ {pippo} [0] "'. Ma immagino che tu stia chiedendo delle situazioni oltre all'interpolazione delle stringhe? – ThisSuitIsBlackNot
@ThisSuitIsBlackNon hai indovinato. Ottima risposta anche! – chilemagic