2013-08-12 22 views
8

Mentre stavo sperimentando, ho scoperto che

print ${\string}

sarebbe stampare string sullo schermo.
È normale? Questo ha un nome?

risposta

11

La parola "stringa" viene interpretata come una stringa che semplicemente non ha citato. use strict vieterebbe questo, e use warnings si sarebbe lamentato.

Si sta quindi prendendo un riferimento alla stringa (efficacemente, my $ref = \"string";) e alla relativa definizione (efficacemente, ${$ref}).

È "normale" nel senso che la vita senza strict è talvolta scivolosa e tagliente.

+5

Anche provare 'sottostringa {return 'foo'}; stampa $ {\ string} 'che fornisce una risoluzione diversa per bareword –

7

E 'un riferimento alla stringa di essere dereferenziato con ${}

perl -MO=Deparse -e "print ${\string}" 
print ${\'string';};