में सरणी, स्केलर और हैश को सबराउटिन पास करने के लिए एकाधिक सरणी, चर, एक सबराउटिन को हैश भेजने का सबसे अच्छा तरीका क्या है?पर्ल
सरल फॉर्म, काम करता है।
my $msg = &getMsg(1,2,3);
print $msg;
sub getMsg {
my($a, $b, $c) = @_;
}
मैं इस संस्करण के साथ समस्या है और एक वैश्विक का उपयोग कर जो नहीं है कि मैं क्या करना चाहते हैं के बिना सबरूटीन के लिए सुरक्षित रूप से डेटा भेजने के लिए कैसे यकीन नहीं है।
my @array = ('a','b','c');
my $str = "Hello";
my %hash = (
'a' => ['100','nuts'],
'b' => ['200','bolts'],
'c' => ['300','screws'],
);
my $msg = getMsg(@array, $str, %hash);
print $msg;
sub getMsg {
my (@a, $s, %h) = @_;
my $MSG;
foreach my $x (@a) {
$MSG .= "\n$str, $x your hash value = $h{$x}[0] $h{$x}[1]";
}
return $MSG
}
ध्यान दें कि उप-$ MSG = = \ \ $ $, $ x आपके हैश मान = $ एच -> {$ x} -> [0] $ h- में उपयोग किए जाने पर पास किए गए हैशफ को संदर्भित करने की आवश्यकता है। > {$ X} -> [1] "; ' – BarneySchmale