错误在Perl:使用哈希作为参考被弃用(Error in perl: Using a hash as

2019-10-31 17:43发布

sub function{
my $storedata=shift;
my $storenameandaddress=$storedata->{$storeid}->{name}
."_".$storedata->{$storeid}->{location}->{address}
."_".$storedata->{$storeid}->{location}->{city}
."_".$storedata->{$storeid}->{location}->{state}
."_".$storedata->{$storeid}->{location}{country};}

我的代码如上所示。 它给我的错误信息:

Using a hash as a reference is deprecated at main.pl line 141.

然而,该功能仍是可运行的。 而所有的休息似乎罚款。 那么,什么是这个错误在说什么? 我应该如何解决? 谢谢。

Answer 1:

你的代码张贴不给的警告。 该形式的代码

%foo->{bar}

给出了警告。 它给出了警告,因为它用作

$foo->{bar}

即使它不应该。


$ perl -wE'my %h = ( foo => 123 ); say %h->{foo};'
Using a hash as a reference is deprecated at -e line 1.
123

$ perl -Mdiagnostics -wE'my %h = ( foo => 123 ); say %h->{foo};'
Using a hash as a reference is deprecated at -e line 1 (#1)
    (D deprecated) You tried to use a hash as a reference, as in
    %foo->{"bar"} or %$ref->{"hello"}.  Versions of perl <= 5.6.1
    used to allow this syntax, but shouldn't have. It is now deprecated, and will
    be removed in a future version.

123

$ perl -wE'my %h = ( foo => 123 ); say $h->{foo};'
123


文章来源: Error in perl: Using a hash as a reference is deprecated