प्रश्न 1:मैं पर्ल में किसी फ़ंक्शन में सरणी कैसे पास कर सकता हूं?
मैं एक समारोह में एक सरणी पास करना चाहता हूं। लेकिन कार्य में पारित तर्क बदल दिया गया है। क्या इसे मूल्य से बुलाया जाता है?
प्रश्न 2:
#my ($name, $num, @array)= @_; <=1)
my $name = shift; <=2)
my $num = shift;
my @array = shift;
केस 1 और 2 अलग उत्पादन है। ऐसा क्यों हुआ?
#!/usr/bin/perl
use strict;
my @test1;
push @test1, ['a', 1];
push @test1, ['b', 1];
push @test1, ['c', 1];
push @test1, ['d', 1];
push @test1, ['e', 1];
for (my $i=0; $i< scalar(@test1); $i++) {
print "out1: $test1[$i][0] $test1[$i][1]\n";
}
test_func("test_func", 10, @test1);
sub test_func {
#my ($name, $num, @array)= @_; <=1)
my $name = shift; <=2)
my $num = shift;
my @array = shift;
print "$name\n";
print "$num\n";
for (my $i=0; $i< scalar(@test1); $i++) {
print "$array[$i][0] $array[$i][1]\n";
}
for (my $i=0; $i< scalar(@test1); $i++) {
if ($array[$i][0] eq 'a') {
$array[$i][0] = 'z';
}
}
for (my $i=0; $i< scalar(@test1); $i++) {
print "change: $array[$i][0] $array[$i][1]\n";
}
}
for (my $i=0; $i< scalar(@test1); $i++) {
print "out2: $test1[$i][0] $test1[$i][1]\n";
}
#
नीचे परीक्षण उत्पादन होता है।
out1: a 1
out1: b 1
out1: c 1
out1: d 1
out1: e 1
test_func
10
a 1
b 1
c 1
d 1
e 1
change: z 1
change: b 1
change: c 1
change: d 1
change: e 1
out2: z 1 <= Why did it change?
out2: b 1
out2: c 1
out2: d 1
out2: e 1
आपकी तरह के स्पष्टीकरण के लिए धन्यवाद।मैं अपनी मुश्किल समस्या को हल करता हूं ^^ – user1395438
यदि इस समाधान ने मदद की है, तो कृपया –
के बगल में स्थित चेक मार्क चिह्नित करें ... और यदि नहीं, तो हमें बताएं कि क्या गुम है। – ikegami