在 Perl 中,如何创建一个以散列作为输入并遍历值和键的函数?
例如,假设我有这个可爱的输入
my %role2numbers = ( Role->{Dog} => 6,
Role->{Cat} => 3,
Role->{Mouse} => 1, );
其中 Role->{Dog} 是唯一常量。将它们视为 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,当循环转到cat时,猫应该被称为name1,name2和name3,name7,name8和name9。
有任何想法吗?