在
PHP中,我可以写:
$vname = 'phone'; $$vname = '555-1234'; print $phone;
…脚本将输出“555-1234”.
Perl有什么等同的吗?
有没有办法限制电话到本地区域的范围,好像我写了我的$电话?使用我的$$vname给我“无法在…中声明标量取消引用”错误.
解决方法
你试图做的是一个“符号引用”.虽然您可以在Perl
you shouldn’t中执行此操作.符号引用仅适用于全局变量 – 不是词法(我的).没有办法限制他们的范围.符号引用是危险的.因此,他们不按严格的规定工作.
一般来说,每当你认为你需要符号引用时,你应该使用一个哈希:
my %hash; $hash{phone} = '555-1234'; print $hash{phone};
有少数情况下,symrefs是有用的,甚至是必要的.例如,Perl的出口机制使用它们.这些是高级主题.当你准备好他们时,你不需要问如何.