#!/usr/bin/perl
use strict;
use warnings;
my @a = qw/a b c/;
(@a) x= 3;
print join(", ", @a), "\n";
मैं ऊपर कोड "a, b, c, a, b, c, a, b, c\n"
मुद्रित करने के लिए उम्मीद करेंगे, लेकिन इसके बजाय यह संदेश के साथ मर जाता है:जब मैं सरणी असाइनमेंट ऑपरेटर को सरणी के साथ उपयोग करने का प्रयास करता हूं तो मुझे कोई त्रुटि क्यों मिलती है?
Can't modify private array in repeat (x) at z.pl line 7, near "3;"
यह अजीब लगता है क्योंकि X <op>= Y
X = X <op> Y
के बराबर होने के रूप में लिखित हैं, और निम्न कोड के रूप में काम मैं इसे करने की उम्मीद:
#!/usr/bin/perl
use strict;
use warnings;
my @a = qw/a b c/;
(@a) = (@a) x 3;
print join(", ", @a), "\n";
इस पर्ल में एक बग है या मैं गलत समझ रहा हूँ कि यहाँ क्या उसका क्या होगा?
हाँ, मैं केवल इसमें भाग गया क्योंकि मैं सभी ऑपरेटरों (github.com/cowens/perlopref) को दस्तावेज कर रहा हूं और मैं अपनी भरोसेमंद धारणा का परीक्षण कर रहा था कि उसे क्या करना चाहिए। –
मुझे नहीं लगता कि मैं इसे एक बग कहूंगा, क्योंकि पर्ल 4 मैनुअल स्पष्ट रूप से उल्लेख करता है कि यह केवल स्केलर्स पर काम करता है: http://www.cs.cmu.edu/afs/cs.cmu।edu/web/people/rgs/pl-exp-op.html # x – mercator
@mercator यह पर्ल मैनुअल नहीं है (जो या तो ऊंट या 'perldoc' से कुछ सुलभ होगा) होगा। तथ्य यह है कि यह एक ही व्यवहार को दस्तावेज करता है इसका मतलब यह नहीं है कि व्यवहार एक बग नहीं है। वर्तमान (5.10.1) दस्तावेज के लिए http://perldoc.perl.org/perlop.html#Assignment-Operators देखें। –