【发布时间】:2016-09-17 07:49:00
【问题描述】:
代码收到与中类似的警告
Why does this code throw a "Useless use of anonymous hash ({}) in void context" warning.
在我使用严格之前,警告不会出现。 当我尝试在使用 strict 的更大的子例程中使用此代码时,它会惨遭失败,所以我想弄清楚为什么下面的代码在我使用 strict 时会给我这个警告。
#!/usr/bin/perl
use strict;
use warnings;
sub foo {
my %args=@_;
my %defaults=(my $config=>'kconfig', my $mem=>'kmem', my $baz=>7);
foreach (keys %defaults) {
defined ($args{$_}) || {$args{$_}= $defaults{$_}} ;
print $_ ," - ",$args {$_},"\n";
}
}
&foo (bar=>"1");
【问题讨论】:
-
将 foreach 的第一行更改为:
$args{$_} //= $defaults{$_};
标签: perl