以下代码不会打印' HASH'类型。这段代码有什么问题?
#! /usr/bin/perl
$prices{'pizza'} = 12.00;
$prices{'coke'} = 1.25;
$prices{'sandwich'} = 3.00;
print ref($prices);
答案 0 :(得分:9)
首先,您应该将use strict;
和use warnings;
放在脚本的顶部(并为所有未来的Perl代码执行此操作)。完成后,您将看到以下内容:
Global symbol "%prices" requires explicit package name at ./a.pl line 4.
Global symbol "%prices" requires explicit package name at ./a.pl line 5.
Global symbol "%prices" requires explicit package name at ./a.pl line 6.
Global symbol "$prices" requires explicit package name at ./a.pl line 7.
Execution of ./a.pl aborted due to compilation errors.
这意味着您尝试使用分隔变量:%prices
哈希和$prices
标量。
使用my %prices;
修复变量声明后,您可以获得对%prices
哈希的引用,如下所示:
my $prices_ref = \%prices;
print ref($prices_ref);
答案 1 :(得分:0)
从正式的角度来看,答案可能更短:
可能你的想法是写
$prices->{'pizza'} = 12.00;
$prices->{'coke'} = 1.25;
$prices->{'sandwich'} = 3.00;
print ref($prices);