perl中的引用:perl代码中的错误

时间:2014-07-05 10:50:46

标签: perl reference

这是我的代码:

  #!/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.

如何删除上述错误?

2 个答案:

答案 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}}