Следующий код не печатает тип «HASH». Что не так с этим кодом?Perl ref() не печатает тип «HASH»
#! /usr/bin/perl
$prices{'pizza'} = 12.00;
$prices{'coke'} = 1.25;
$prices{'sandwich'} = 3.00;
print ref($prices);
Следующий код не печатает тип «HASH». Что не так с этим кодом?Perl ref() не печатает тип «HASH»
#! /usr/bin/perl
$prices{'pizza'} = 12.00;
$prices{'coke'} = 1.25;
$prices{'sandwich'} = 3.00;
print ref($prices);
Прежде всего, вы должны поставить 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);
От формальной точки зрения, ответ может быть короче:
Возможно, ваша идея была написать
$prices->{'pizza'} = 12.00; $prices->{'coke'} = 1.25; $prices->{'sandwich'} = 3.00; print ref($prices);