1

我有一些这样的陈述:

my $name = $criteria->{'name'} if $criteria->{'name'};
my $age  = $criteria->{'age'}  if $criteria->{'age'};
my $dob  = $criteria->{'dob'}  if $criteria->{'dob'};
.
.
.
# there are around 8 of these

我想做类似的事情:

foreach (qw/name age dob .../) {
    ${$_} = $criteria->{$_} if $criteria->{$_};
}

我确定我以前做过这个,但是当我尝试使用它时,use strict它抛出了一个错误。

有没有办法做到这一点?还是有更好的方法来做我想做的事?我只是真的很懒惰,但如果有办法做到这一点,那会很有趣。

如果可以的话,在内存方面运行会更有效吗?我正在尝试提高脚本的速度。

4

1 回答 1

7

更好的方法是使用你已经拥有的散列,而不是使用当前包命名空间作为散列。不,您不会在尝试做的事情上节省内存或时间。事实上,你正在使用更多的两者。

于 2013-01-30T15:50:37.123 回答