iPh*_*ian 2 perl scalar reference
谁能告诉我为什么这个打印REF(*)而不是0?
$a = 0;
$a = \$a;
print $$a . "\n";
Run Code Online (Sandbox Code Playgroud)
嗯,因为$a不再包含0,而是对自身的引用.你在第二行覆盖了它!
如果你想设置$a到一个参考$a的原始值,那么你可以写
$a = \"$a"
Run Code Online (Sandbox Code Playgroud)
它通过使用恰好评估值的表达式并对其进行$a引用来工作.如果$a以简单的字符串或数字之外的其他内容开始,这将失败,例如引用或在字符串化时更改的任何值.然后你可以写一个身份函数,如
sub i { shift }
Run Code Online (Sandbox Code Playgroud)
并使用
$a = \i($a)
Run Code Online (Sandbox Code Playgroud)