كيف يمكنني مرجع تجزئة بيرل تم نقله إلى روتين فرعي؟
-
21-09-2019 - |
سؤال
ما زلت أحاول فرز تجزئة التجزئة. مشكلتي الحالية هي أنني أعمل الآن على الهاشرف إلى فرعي ، وأريد أن أتعرض لها داخل هذا الفرع. لكنني لا أجد الطريقة/بناء الجملة الصحيحة للقيام بذلك. ضمن الفرع ، أريد تكرار مفاتيح التجزئة ، لكن بناء الجملة لـ Hashref ليس هو نفسه تجزئة ، وهو ما أعرفه.
إذن ما أريده هو أن أفعل هذا:
sub foo {
%parms = @_;
foreach $keys (key %parms) { # do something };
}
ولكن مع تمرير هاشف بدلاً من التجزئة.
أي مؤشرات (التورية غير المقصودة) هي موضع ترحيب.
شكرًا.
المحلول
لم أقم باختبار الرمز في هذا الوقت ، لكن كتابة Freehand سترغب في القيام بشيء مثل هذا:
sub foo {
$parms = shift;
foreach my $key (keys %$parms) { # do something };
}
نصائح أخرى
فيما يلي إحدى الطرق إلى مرجع التجزئة الذي تم نقله إلى Sub:
use warnings;
use strict;
my %pars = (a=>1, b=>2);
foo(\%pars);
sub foo {
my ($href) = @_;
foreach my $keys (keys %{$href}) { print "$keys\n" }
}
__END__
a
b
أنظر أيضا المراجع مرجع سريع و perlreftut
sub foo
{
my $params = $_[0];
my %hash = %$params;
foreach $keys (keys %hash)
{
print $keys;
}
}
my $hash_ref = {name => 'Becky', age => 23};
foo($hash_ref);
أيضا مقدمة جيدة حول المراجع هو هنا.
#!/usr/bin/perl
use strict;
my %params = (
date => '2010-02-17',
time => '1610',
);
foo(\%params);
sub foo {
my ($params) = @_;
foreach my $key (keys %$params) {
# Do something
print "KEY: $key VALUE: $params{$key}\n";
};
}
لا تنتمي إلى StackOverflow