2014-01-08 17 views
7

Wissen Sie, was "$ :: n;" meint ? Der Codeabschnitt ist wie folgt.

use JSON::XS; 
# ... 
open (YI, "| $cmd"); 
my $msg = { test => test }; 
my $emsg = encode_json($msg); 
print YI "$msg_inject\n" unless $::n; 
close YI;` 

Ich erinnere mich, dass ich auch traf $ :: v vor. Was ist $ :: v? Hat es zusätzliche Verwendung?

Ich weiß nur $: ist reserviertes Wort für eine Perl-Anweisung mit mehr Zeilen füllen ein Feld.

Mit freundlichen Grüßen,

TWLMD.

+0

Wenn Sie dieses Stück Code Note verantwortlich ist, dass es durchaus ein paar Probleme hat: zwei arg offen und mit einem Bareword die Dateikennung zu speichern. Sehen Sie das neue Perlopentut in der aktuellen 5.19 Entwicklungsversion für Beispiele, wie man es richtig macht. –

Antwort

18

$::n ist die gleiche wie $main::n oder nur $n wobei $ n in main:: Paket befinden.

Diese Notation ignoriert eventuelle lexikalische (definiert mit my) Definition von $n, dh.

perl -Mstrict -we 'our $n=3; my $n=1; print $::n' 

Ausgang ist 3

+3

(Interessanter Leckerbissen: 'main ::' ist eigentlich nur ein Verweis auf den leeren Namespace, also '$ :: n',' $ main :: n', '$ main :: main :: n',' $ main :: main :: main :: n', usw. sind alle gleich var.) – ikegami