Perl散列解引用

Perl散列解引用,perl,Perl,我正在学习brian d foy第二版的Intermediate Perl。我正在处理对哈希的引用。我已经用草莓Perl运行了其中一个脚本,我不确定是否得到了预期的结果。剧本是: my %gilligan_info = ( name => 'Gilligan', hat => 'White', shirt => 'Red', position => 'First Mate', ); my %skipper_info = ( n

我正在学习brian d foy第二版的Intermediate Perl。我正在处理对哈希的引用。我已经用草莓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)};
}
我看到的结果是

我以为这个例子会显示实际值,但我只是看到了内存地址

谁能给点建议吗 谢谢
约翰

你用word做编辑吗?我这样说是因为看起来您的格式使用了n-dash或m-dash而不是-word会自动执行此操作。掌握notpad++并将其用作编辑器。

您是否使用word作为编辑器?我这样说是因为看起来您的格式使用了n-dash或m-dash而不是-word会自动执行此操作。获取notpad++并将其用作编辑器。

我使用NotePad++进行粘贴和保存。代码按我的原样工作,没有任何更改

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

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

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

我使用记事本++粘贴和保存。代码按我的原样工作,没有任何更改

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

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

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

谢谢我在使用notepad++和utf-8。我从kindle电子书上复制了这个脚本,它一定带有一些奇怪的编码。手动输入,可以正常工作。看起来$format有U+2212− 减号而不是U+002D-连字符-减号。Unicode的乐趣:-谢谢。我在使用notepad++和utf-8。我从kindle电子书上复制了这个脚本,它一定带有一些奇怪的编码。手动输入,可以正常工作。看起来$format有U+2212− 减号而不是U+002D-连字符-减号。Unicode的乐趣:-