निम्न स्क्रिप्ट:
#!/usr/bin/env perl
#mytest.pl
no warnings;
$bar = "this";
@bar = qw/ 1 2 3 4 5 /;
%bar = qw/ key value /;
open bar, '<', 'mytest.pl' or die $!;
sub bar {
return "Sub defined as 'bar()'";
}
$main::{foo} = $main::{bar};
print "The scalar \$foo holds $foo\n";
print "The array \@foo holds @foo\n";
print "The hash \%foo holds ", %foo, "\n";
my $line = <foo>;
print "The filehandle 'foo' is reads ", $line;
print 'The function foo() replies "', foo(), "\"\n";
आउटपुट:
The scalar $foo holds this
The array @foo holds 1 2 3 4 5
The hash %foo holds keyvalue
The filehandle 'foo' is reads #!/usr/bin/env perl
The function foo() replies "Sub defined as 'bar()'"
तो अगर *main::foo = *main::bar;
$main::{foo} = $main::{bar};
के रूप में एक ही बात नहीं करता है, मैं कैसे एक व्यावहारिक पता लगाने के लिए के रूप में एक नुकसान में हूँ अंतर। ;) हालांकि, एक वाक्यविन्यास परिप्रेक्ष्य से, ऐसी स्थितियां हो सकती हैं जहां एक विधि बनाम एक विधि का उपयोग करना आसान हो। ... प्रतीक तालिका में चारों ओर घूमने के बारे में सामान्य चेतावनियां हमेशा लागू होती हैं।
मुझे उत्सुकता है कि यह क्या हुआ। :) –
पूर्व में सख्त 'subs' या सख्त सक्षम होने पर पूर्व त्रुटि होती है, बाद वाले को अनुमति दी जाती है। – MkV
मैं कुछ विधि नामों को उपनाम के लिए एक लूप लिख रहा था और सोच रहा था कि मैं हमेशा क्यों {{कोई सख्त 'रेफरी' लिखता हूं; * {'कुछ :: पीकेजी'। $ नया} = * {'कुछ :: पीकेजी'। $ पुराना} 'जब '$ कुछ :: pkg :: {$ new} = $ कुछ :: pkg :: {$ old } 'बस भी काम करेगा। सहजता से वे वही लगते हैं, लेकिन संबंधों/ओवरलोड/अन्य जादू जैसी चीजें "दिलचस्प" परिणाम हो सकती हैं अगर उन्होंने प्रतिलिपि को अलग-अलग, या तो एक बग या एक इच्छित व्यवहार के रूप में संभाला। –