【问题标题】:Why I can't use interpolated variable as varname?为什么我不能使用插值变量作为 varname?
【发布时间】:2015-09-30 22:56:39
【问题描述】:

不幸的是,我没有弄清楚为什么$alfa 仍然是空的:

use 5.014; 
no strict 'refs';

my $berta = 5;
my $gamma = 'berta';
my $alfa = ${$gamma};

say "'$alfa'";

一定很简单...我希望$alfa 在这里变成5。我错过了什么?

【问题讨论】:

  • 你的变量名很有趣。谁是伯塔? :D
  • 与此讨论相关:perl.plover.com/varvarname.html - 实际这样做是一个可怕的想法。
  • 不,这不是重复的。那就是问怎么做。这个问题就是为什么它不起作用。
  • @simbabque:实际上这些是字母的拼写名称(例如在国际象棋中,但在军事中也是如此),至少在爱沙尼亚
  • 我明白了。听起来像希腊语,有拼写障碍。 :)

标签: perl


【解决方案1】:

我认为问题在于代码仅适用于全局变量,不适用于使用my 声明的词法变量。 See the FAQ.

our $berta = 5;
 my $gamma = 'berta';
say $$gamma; # 5

显然,这在生产代码中不是一个好主意。

【讨论】:

  • 只有$berta,被取消引用的变量名,必须是全局的。 $gamma 可以是词法的。
猜你喜欢
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
相关资源
最近更新 更多