Вы объявляете $symbols
вместо @symbols
, поэтому он помещает это в скалярный контекст и устанавливает его в 'C'. Затем вы пытаетесь перебрать хеш с тем же именем, которое вы никогда не создавали. Помните, что $a
(скаляр), @a
(массив) и %a
(хэш) все разные.
Это то, что вы хотели:
my @symbols = qw/ A B C /; ## the same as ( 'A', 'B', 'C' )
foreach my $symbol ( @symbols ) {
print $symbol;
}
Действительно быстро:
my @symbols = qw/ A B C /; ## new array with three values
my $symbols = qw/ A B C /; ## new scalar that is the last element of the "A B C" list ($symbols = 'C')
my %symbols = (
A => 1,
B => 2,
C => 3,
); ## a hash with three key/value pairs