my %myHash = (
key1 => {
test1 => 1,
test2 => 2,
},
key2 => {
test1 => 3,
test2 => 4,
},
);
my $myRef = $myHash{ "key". ((~~keys %myHash) + 1) } //= {
test1 => 5,
test2 => 6,
};
मुझे हास्य करें और ऊपर मान लीजिए वास्तव में व्यावहारिक है। संदर्भ के माध्यम से मैं इस नव निर्मित कुंजी को कैसे हटा सकता हूं?पर्ल हैश संदर्भ
delete $myRef;
जाहिर है काम नहीं करता है
संपादित करें: तो मैं निम्नलिखित है zostay से ...
sub deleteRef {
my ($hash_var, $hash_ref) = @_;
for (keys %$hash_var) {
delete $hash_var->{$_} if ($hash_var->{$_} == $hash_ref);
}
}
उपयोग:
deleteRef(\%myHash, $myRef);
कि कैसा है? अभी भी अनुशंसित नहीं है?
तो मेरा मतलब है पर टिका 'टाइपेज' को कम करने के लिए हैश कुंजी के संदर्भ का उपयोग कर रहा हूं क्योंकि मैं कई लाइनों पर हैश के हैश तक पहुंच रहा हूं। आप subroutine के बारे में क्या सोचते हैं? –
सब ठीक है। मैं संदर्भ तुलना करने की अनुशंसा नहीं करता क्योंकि ऐसी चीजें लगभग सार्वभौमिक रूप से हल हो सकती हैं। हालांकि, "बेहतर" की परिभाषा बहस के लिए विषय है और वास्तविक समस्या जिसे आप हल करने की कोशिश कर रहे हैं। वास्तविक समस्या को जानने के बिना, मुझे नहीं पता कि एक बेहतर समाधान क्या होगा। – zostay