在Perl中,如何創建一個函數,將哈希作爲輸入並遍歷值和鍵?Perl:將哈希作爲輸入並遍歷數值和鍵的函數
例如,說我有這個可愛的輸入
my %role2numbers = (Role->{Dog} => 6,
Role->{Cat} => 3,
Role->{Mouse} => 1,);
其中role - > {}狗是唯一的常數。把它們當作1,2和3
而且這種方法:
sub make_zoo{
my %number_members_for_role = @_;
my $database_operation = SomeDBIModule::Table->new();
my $rows = $database_operation->select();
while (my ($role, $num) = each %number_members_for_role) {
for my $i (@$rows + 1 .. @$rows + $num) {
$database_operation->insert(
+{ zoo_id => 1,
name => "name".$i,
type => $role,
}
);
}
}
}
但是當我做
make_zoo (%role2numbers);
它不會產生我想要的。
它增加了6只狗,3只貓和1只老鼠。但是這些狗被稱爲name1,name2,name3,name4,name5,name6,當循環進入貓時,貓應該被稱爲name1,name2和name3,name7,name8和name9。
任何想法?
這*應該*正常工作。你爲什麼不在循環內打印'$ num','$ i'和'$ role'的值,看看你的假設是否正確? – amon
@amon對不起,它工作正常。問題實際上是名字重複。 name1,name2,name3,name4,name5,name6,然後當它進入貓,name1再... – ado
@amon我編輯的問題。 – ado