无法在 Perl 中取消引用标量
Can't dereference scalar in Perl
谁能告诉我为什么打印 REF(*)
而不是 0
?
$a = 0;
$a = $a;
print $$a . "\n";
嗯,因为 $a
不再包含 0,而是对自身的引用。你在第二行覆盖了它!
如果你想将 $a
设置为对 $a
的 原始值 的引用,那么你可以写
$a = \"$a"
的工作原理是使用 表达式 恰好计算出 $a
的值,并引用它。如果 $a
开始时不是简单的字符串或数字,例如引用或任何在字符串化时发生变化的值,这将失败。然后你可以写一个身份函数,比如
sub i { shift }
并使用
$a = \i($a)
你的最后一个赋值使得 $a
引用自身,因此取消引用它就像以循环方式追逐自己的尾巴一样有意义,
use warnings;
use Data::Dumper;
$a = 0;
$a = $a;
print Dumper $a;
输出
$VAR1 = $VAR1;
您可能想要引用一个值列表,它可以满足您的需求,
($a) = \map { $_ } $a;
print Dumper $a;
输出
$VAR1 = [=13=];
谁能告诉我为什么打印 REF(*)
而不是 0
?
$a = 0;
$a = $a;
print $$a . "\n";
嗯,因为 $a
不再包含 0,而是对自身的引用。你在第二行覆盖了它!
如果你想将 $a
设置为对 $a
的 原始值 的引用,那么你可以写
$a = \"$a"
的工作原理是使用 表达式 恰好计算出 $a
的值,并引用它。如果 $a
开始时不是简单的字符串或数字,例如引用或任何在字符串化时发生变化的值,这将失败。然后你可以写一个身份函数,比如
sub i { shift }
并使用
$a = \i($a)
你的最后一个赋值使得 $a
引用自身,因此取消引用它就像以循环方式追逐自己的尾巴一样有意义,
use warnings;
use Data::Dumper;
$a = 0;
$a = $a;
print Dumper $a;
输出
$VAR1 = $VAR1;
您可能想要引用一个值列表,它可以满足您的需求,
($a) = \map { $_ } $a;
print Dumper $a;
输出
$VAR1 = [=13=];