在将这些变量传递给子程序的两种方式之间,与内存和/或磁盘使用有任何区别:
&subrutine_1($hash_reference);
sub subrutine
{
my $hash = $_[0];
my $var_1 = $$hash{'var_1'};
my $var_2 = $$hash{'var_2'};
my $var_3 = $$hash{'var_3'};
}
或
&subrutine_1($hash_reference);
sub subrutine
{
my $var_1 = $_[0]{'var_1'};
my $var_2 = $_[0]{'var_2'};
my $var_3 = $_[0]{'var_3'};
}
谢谢!
答案 0 :(得分:1)
磁盘使用情况应该相同,因为没有I / O操作。在第一种情况下,内存消耗会更大,因为您需要一个标量变量$ hash。它只会存储一个引用,因此差异很小。
实际上复制哈希会消耗更多内存,但是:
sub subroutine {
my %hash = %{ $_[0] };
my $var_1 = $hash{var_1};
# ...
}