Perl,在另一个标量中按名称访问变量

chr*_*s01 3 perl

我很确定这适用于perl,但我不知道如何编写代码.我可以用eval想象它,但那不是我想要的.

my $foo = 0;
my $varname = "foo";


$($varname) = 1;  # how to do this? 
# I want to access a scalar that name is in a other scalar
# so $foo should be 1 now.
Run Code Online (Sandbox Code Playgroud)

谢谢

cjm*_*cjm 8

你要做的是被称为符号引用,语法是${$varname}(或仅仅是$$varname为了简单的情况).但这几乎总是一个坏主意,因为它往往会产生非常难以诊断的错误.这就是它被禁止的原因use strict.

你可以说no strict 'refs'允许符号引用,但你真的,真的,不应该.

符号引用的两个主要替代方法是哈希硬引用.很难说哪一个更适合你的情况,因为你还没有真正解释你想要做什么.