首先是一句警告。您正在请求有关执行极差实践的信息。应该消除而不是寻求远距离的行动。
可以将两个名称绑定到同一个
SV
。这样绑定的名称称为别名。无法返回绑定名称,因此无法返回别名。
返回一个重载字符串化的对象怎么样?
$ perl -E'
use String::Defer qw( );
{
my $value = "old";
sub set_value { $value = $_[0] }
sub get_value { String::Defer->new(\$value) }
}
{
my $value = get_value();
say $value;
set_value('new');
say $value;
}
'
old
new
你
应该
而是返回一个引用。
$ perl -E'
{
my $value = "old";
sub set_value { $value = $_[0] }
sub get_ref { \$value }
}
{
my $value_ref = get_ref();
say $$value_ref;
set_value('new');
say $$value_ref;
}
'
old
new