मुझे हैश संदर्भों को समझने में परेशानी हो रही है और इसे वापस करने के बजाय हैश को बदलना है। मैं एक उप दिनचर्या लिखना चाहता हूं जो हैश से एक मूल्य वापस कर देगा और हैश को भी संशोधित करेगा। इसके लिए कोडिंग करते समय मुझे कुछ मुद्दों का सामना करना पड़ रहा था। इसलिए, मैंने हैश को संशोधित करने के लिए निम्नलिखित बुनियादी कोड लिखा है।पर्ल संशोधित हैश संदर्भ
#!/usr/local/bin/perl
#Check hash and array references
#Author: Sidartha Karna
use warnings;
use strict;
use Data::Dumper;
sub checkHashRef{
my ($hashRef, $arrVal) = @_;
my %hashDeref = %{$hashRef};
$hashDeref{'check'} = 2;
push(@{$arrVal}, 3);
print "There:" ;
print Dumper $hashRef;
print Dumper %hashDeref;
print Dumper $arrVal
}
my %hashVal = ('check', 1);
my @arrVal = (1, 2);
checkHashRef(\%hashVal, \@arrVal);
print "here\n";
print Dumper %hashVal;
print Dumper @arrVal;
उत्पादन मनाया है:
There:$VAR1 = {
'check' => 1
};
$VAR1 = 'check';
$VAR2 = 2;
$VAR1 = [
1,
2,
3
];
here
$VAR1 = 'check';
$VAR2 = 1;
$VAR1 = 1;
$VAR2 = 2;
$VAR3 = 3;
उत्पादन से, मैं अनुमान लगाया है कि, hashDeref में परिवर्तन के संदर्भ में डेटा को संशोधित नहीं कर रहे हैं। क्या मेरी समझ सही है? क्या इसे वापस करने के बजाय हैश चर को संशोधित करने का कोई तरीका है।
धन्यवाद "एमयू बहुत छोटा है" – Sid