我有一些这样的语句:
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
时它抛出了一个错误。
有没有办法做到这一点?或者有更好的方法来做我想做的事吗?我真的很懒,但是如果有办法做到这一点,那将很有趣。
如果可以的话,在内存方面运行会不会更有效率?我正在努力提高脚本的速度。
最佳答案
更好的方法是使用您已有的散列,而不是使用当前包命名空间作为散列。不,你并没有通过你正在尝试做的事情来节省内存或时间。事实上,您更多地使用了两者。
关于perl - 有没有办法在使用严格时从 Perl 中的字符串/变量创建变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14608013/