विशेष सरणी, @_
, जहां एक समारोह में पारित सभी तर्क मौजूद हैं, वास्तव में पारित तर्कों के लिए एक उपनाम है। इसलिए, हम इस विशेष सरणी @_
पर सीधे किए गए किसी भी बदलाव को मुख्य रूप से भी प्रतिबिंबित करेंगे। यह स्पष्ट है।पर्ल: विशेष सरणी @_ वास्तव में उपनाम नहीं है?
#!/usr/bin/perl
use warnings;
use strict;
$\="\n";
sub func {
print \@_;
$_++ for(@_);
}
my @arr=(2..4);
print \@arr;
func(@arr);
print "@arr";
उपरोक्त कार्यक्रम के लिए, मैं @arr
और @_
के संदर्भ में एक ही स्थान को इंगित करने के बाद से यह एक उपनाम है उम्मीद। लेकिन यह वैसा नहीं है।
ऊपर चल रहा है पर:
ARRAY(0x1b644d0)
ARRAY(0x1b644e0)
3 4 5
वे 2 अलग-अलग स्थानों की ओर इशारा करते रहे हैं, तो कैसे परिवर्तन @_
में किया @arr
में दर्शाती है?
क्या मुझे कुछ गलत दिख रहा है? कृपया सलाह दें।
'@ _' कुछ भी उपनाम नहीं है। दस्तावेज कहता है कि यही नहीं है। '_ _' के व्यक्तिगत * तत्व * उपनाम हैं। –