Perl哈希解引用

时间:2019-02-15 13:05:09

标签: perl

我正在通过brian d foy(第二版)在Perl的Intermediate Perl中工作。我正在处理有关哈希的引用的部分。我已经在Strawberry Perl中运行了其中一个脚本,但不确定是否能获得预期的结果。脚本是:

 my %gilligan_info = (
  name     => 'Gilligan',
  hat      => 'White',
  shirt    => 'Red',
  position => 'First Mate',
);
my %skipper_info = (
  name     => 'Skipper',
  hat      => 'Black',
  shirt    => 'Blue',
  position => 'Captain',
);
my @crew = (\%gilligan_info, \%skipper_info);

my $format = "%−15s %−7s %−7s %−15s\n";
printf $format, qw(Name Shirt Hat Position);
for my $crewmember (@crew) {
  printf $format, @$crewmember{qw(name shirt hat position)};
}

我看到的输出是

enter image description here

我以为该示例将显示实际值,但我只是看到内存地址(我认为)。

有人可以建议吗 谢谢 约翰

2 个答案:

答案 0 :(得分:4)

您是否使用word作为编辑器?我说这是因为看起来您的格式使用的是n-破折号或m-破折号而不是-,而word会自动执行此操作。掌握notpad ++并将其用作编辑器。

答案 1 :(得分:0)

我使用NotePad ++粘贴并保存。该代码对我来说没有任何变化。

如果采用当前代码并将其粘贴到MS Word中,它将看起来很正常。保存并在记事本++中打开。您会看到的

my $format = "%-15s %-7s %-7s %-15s\n";

更改为

my $format = "%?15s %?7s %?7s %?15s\n";