我有这样的陈述:
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
尝试它时,它会引发错误。
有办法做到这一点吗?或者有更好的方法来做我想要的吗?我真的很懒,但如果有办法,那就很有趣了。
如果可以,那么以内存方式运行会更有效吗?我正在努力提高脚本的速度。
答案 0 :(得分:7)
更好的方法是使用已有的哈希,而不是使用当前的包名称空间作为哈希。不,你不是在用你想做的事来节省记忆或时间。事实上,你正在使用更多两者。