有没有办法在使用严格的时候从Perl中的字符串/变量创建变量?

dgB*_*gBP 1 variables perl

我有一些这样的陈述:

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
Run Code Online (Sandbox Code Playgroud)

我想做类似的事情:

foreach (qw/name age dob .../) {
    ${$_} = $criteria->{$_} if $criteria->{$_};
}
Run Code Online (Sandbox Code Playgroud)

我确定我之前已经这样做了,但是当我尝试使用use strict它时发出错误.

有没有办法做到这一点?或者有更好的方法来做我想要的吗?我真的很懒,但如果有办法,那就很有趣了.

如果可以的话,以内存方式运行会更有效吗?我正在努力提高脚本的速度.

hob*_*bbs 7

更好的方法是使用您已有的哈希,而不是使用当前包命名空间作为哈希.不,你不是在用你想做的事来节省记忆或时间.事实上,你使用的更多.