Perl 解引用运算符->不工作

Perl 解引用运算符->不工作,perl,reference,Perl,Reference,我在学习参考资料。在《中级Perl第二版:第5章参考和范围》一书中,给出了以下代码: my $ref; { my @skipper = qw(blue_shirt hat jacket preserver sunscreen); # ref count is 1 $ref = \@skipper; # ref count is 2 print "$ref−>[2]\n"; # prints jacket\n } print "$ref−>[2]\n"; # s

我在学习参考资料。在《中级Perl第二版:第5章参考和范围》一书中,给出了以下代码:

my $ref;
{
    my @skipper = qw(blue_shirt hat jacket preserver sunscreen); # ref count is 1
    $ref = \@skipper; # ref count is 2
    print "$ref−>[2]\n"; # prints jacket\n
}
print "$ref−>[2]\n"; # still prints jacket\n # ref count is 1
当我运行这段代码时,它给出了以下输出:

阵列0x83FC890−>[2]

阵列0x83FC890−>[2]

我还以为应该印夹克呢

当我尝试在没有引号的情况下运行它时,我得到了输出:


无法识别的字符\xE2;标记为您正在使用减号− U+2212。这与ASCII连字符减-U+002D不同

让我们看看您的代码实际包含什么:

use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper <<'END';
my $ref;
{
    my @skipper = qw(blue_shirt hat jacket preserver sunscreen); # ref count is 1
    $ref = \@skipper; # ref count is 2
    print "$ref−>[2]\n"; # prints jacket\n
}
print "$ref−>[2]\n"; # still prints jacket\n # ref count is 1
END

你用的是减号− U+2212。这与ASCII连字符减-U+002D不同

让我们看看您的代码实际包含什么:

use Data::Dumper;
$Data::Dumper::Useqq = 1;
print Dumper <<'END';
my $ref;
{
    my @skipper = qw(blue_shirt hat jacket preserver sunscreen); # ref count is 1
    $ref = \@skipper; # ref count is 2
    print "$ref−>[2]\n"; # prints jacket\n
}
print "$ref−>[2]\n"; # still prints jacket\n # ref count is 1
END

哦我真是太蠢了如何避免这种情况。我用UTF-8编码。你用的是什么编辑器?我只需在键盘上输入普通的连字符减号,一切都正常。从来没有任何问题。我也很好!您是否使用了任何怪异的合成序列或不寻常的keybord设置?减号键没有理由不使用ASCII连字符减号。您使用的是美国键盘吗?其他国家的键盘可能有不同的字符编码点。我真是太蠢了如何避免这种情况。我用UTF-8编码。你用的是什么编辑器?我只需在键盘上输入普通的连字符减号,一切都正常。从来没有任何问题。我也很好!您是否使用了任何怪异的合成序列或不寻常的keybord设置?减号键没有理由不使用ASCII连字符减号。您使用的是美国键盘吗?其他国家的键盘可能有不同的字符编码点。