这是我的代码:
#!/usr/bin/perl -w
my $name = "mark";
my $nameRef = \$name;
print "${$nameRef}\n";
print "$nameRef\n";
my $ref = $nameRef + 1;
$$ref = "antony";
print "$ref\n";
print "$$ref\n";
但是当我运行代码时,我收到以下错误:
mark
SCALAR(0x9556cf8)
Modification of a read-only value attempted at ./stringPerl.pl line 7.
如何删除上述错误?
答案 0 :(得分:2)
Perl字符串引用不是C字符串指针。你不能拿参考并将它增加到其他地方。
执行my $ref = $nameRef + 1;
时,它实际上需要SCALAR(0x9556cf8)
字符串并添加1,使其成为字符串,而不是引用。
不确定你要做什么。
答案 1 :(得分:1)
导致错误的行是:
$$ref = "antony";
试图将价值与'#34; antony"通过$ ref引用变量,但行:
my $ref = $nameRef + 1;
它不是有效的参考。尝试简单地替换为:
my $ref = $nameRef;
因此$ref
与$nameRef
相同,$name
是对my @names = ("mark");
my $nameRef = \@names;
$nameRef->[1] = "antony";
print "$names[1]\n";
print "$nameRef->[1]\n";
的引用。
如果要通过引用更改数组中的值,可以这样写:
{{1}}