麻烦将哈希和变量传递给子例程

use*_*er0 0 perl subroutine

我想将哈希和变量传递给子例程:

%HoA = {'1'=>'2'};
my $group_size = 10;

&delete_unwanted(\%HoA,$group_size);

sub delete_unwanted {
    my (%HoA,$group_size) = @_;
    print "'$group_size'\n"
}
Run Code Online (Sandbox Code Playgroud)

但是,这没有任何打印.

Mil*_*ler 5

您正在传递哈希引用(如您所愿),因此请将其分配给参数catch中的标量:

sub delete_unwanted {
    my ($hashref, $group_size) = @_;

    print "'$group_size'\n"
}
Run Code Online (Sandbox Code Playgroud)

如果您以后想要取消引用它,您可以my %newHoA = %$hashref;,但这将是原始哈希的副本.要访问原始结构,只需使用参考:print $hashref->{a_key};.