当前位置:  开发笔记 > 编程语言 > 正文

在perl中,我可以在子例程中动态创建变量吗?

如何解决《在perl中,我可以在子例程中动态创建变量吗?》经验,为你挑选了1个好方法。



1> Dave Cross..:

是的,您可以在Perl中执行此操作.但对于Mark Dominus在这 三篇 文章中解释的所有原因,这是一个可怕的想法.

将这些值存储在哈希中是一个好主意.

#!/usr/bin/perl

use strict;
use warnings;

my $params = { x => 1, y => 2};
my @params = qw(x y z a b c);

my %var;

foreach my $p (@params) {

  # You need to take care exactly what you want in this
  # logical statement. The options are:
  # 1/ $p exists in the hash
  #    exists $params->{$p}
  # 2/ $p exists in the hash and has a defined value
  #    defined $params->{$p}
  # 3/ $p exists in the hash and has a true value
  #    $params->{$p}
  # I think the first option is most likely. The last one has
  # good chance of introducing subtle bugs.

  if ( exists $params->{$p} ) {
    $var{$p} = $params->{$p};
  }
}

print join ', ', map { "$_: " . ($var{$_} // 'undef') } @params;
print "\n";


请注意,`&& $ params - > {$ p}`将跳过任何不真实的值(零,空字符串等),这可能是也可能不是你想要的.
推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有