尝试修改只读值

mrl*_*nce 5 perl

我是一个perl noob,我用Google搜索了错误,找不到任何相关内容.

#!/usr/bin/perl

use strict;

my %cc;

\my @cc => (3,4,5,6,6,7,7);
$cc{key} = \@cc;

$0 =  $cc{key}[0] * 2;
$1 =  $cc{key}[1] * 1;  #error here

my $total = $0 + $1;

print "$1";
print "$total";
Run Code Online (Sandbox Code Playgroud)

第11行是我的错误......

too*_*lic 14

$0并且$1是Perl中的特殊变量(参见perldoc perlvar). $1是一个只读变量.

此外,您应该启用警告以查看代码中的更多问题.

我的猜测是你想要这样的东西:

use strict;
use warnings;

my @cc = (3,4,5,6,6,7,7);
my %cc;
$cc{key} = \@cc;

my $k0 = $cc{key}[0] * 2;
my $k1 = $cc{key}[1] * 1;
my $total = $k0 + $k1;

print "$k1\n";
print "$total\n";
Run Code Online (Sandbox Code Playgroud)

perldoc perldiag有关于错误消息的更多信息:"尝试修改只读值".

  • 实际上`$ 0`和`$ 1`都是特殊变量. (2认同)