2013-08-12 8 views
8

Während ich experimentierte, fand ich heraus, dass

print ${\string}

string auf dem Bildschirm drucken.
Ist das normal? Hat das einen Namen?

Antwort

11

Das bareword "string" wird als String verstanden, den Sie einfach nicht angegeben haben. use strict würde dies verbieten, und use warnings hätte sich darüber beschwert.

Sie nehmen dann einen Verweis auf die Zeichenfolge (effektiv, my $ref = \"string";) und Dereferenzierung (effektiv, ${$ref}).

Es ist "normal" in dem Sinne, dass das Leben ohne strict manchmal sowohl rutschig und scharfkantig ist.

+5

auch versuchen 'Sub-String {return 'foo'} dereferenziert; print $ {\ string} ', das dem Bareword eine andere Auflösung bietet –

7

Es einen Verweis auf Zeichenfolge ist wird mit ${}

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