我想将哈希和变量传递给子例程:
%HoA = {'1'=>'2'};
my $group_size = 10;
&delete_unwanted(\%HoA,$group_size);
sub delete_unwanted {
my (%HoA,$group_size) = @_;
print "'$group_size'\n"
}
但是,这并没有打印出来。
答案 0 :(得分:5)
您正在传递哈希引用(如您所愿),因此请将其分配给参数catch中的标量:
sub delete_unwanted {
my ($hashref, $group_size) = @_;
print "'$group_size'\n"
}
如果您以后想要取消引用它,您可以my %newHoA = %$hashref;
,但这将是原始哈希的副本。要访问原始结构,只需使用参考:print $hashref->{a_key};
。
答案 1 :(得分:1)
您的问题出在:
my (%HoA,$group_size) = @_;
你可以通过说,例如:
来解决它sub delete_unwanted {
my $hashPointer = shift;
my $group_size = shift
请注意,您可以通过以下任一方式检索子例程中的原始哈希:取消引用hashPointer(我的%HoA =%$ hashPointer),或者您可以直接使用指针直接访问哈希内容(例如,$ hashPointer- > {'键'})