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

标签 perl variables

我有一些这样的语句:

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/

相关文章:

perl - 如何在 Perl 中输入多行注释?

regex - 在排序比较器中修改字符串

string - Perl:向 $_ 添加字符串会产生奇怪的结果

为 IN 子句传递 DBI-> 执行值时出现 perl 错误

java - 如何在一种方法和另一种方法中使用声明的变量。

c - 在函数之间传递参数

php - Javascript 没有提取 php 变量,页面没有加载 php?

perl - 如何将二进制数向左移动

javascript - Chart.JS 全局选项

html - 如何在html标签中使用vbs变量