You want this:
@numbers = (1,4,5,6,7,8,9);
foreach my $number (@numbers)
{
print ("$number\n");
}
With {1,4,5,6,7,8,9}
you're actually creating a reference to an anonymous hash containing the key value pairs (1 => 4, 5 => 6, 7 => 8, 9 => undef)
. When you write @numbers = {1,4,5,6,7,8,9};
that reference becomes the sole scalar stored in the @numbers
array.
Furthermore, if you just want to iterate over the elements, no need to use the "classic" style with a counter.
You can do:
for my $number (1 .. 9) {
print "$number\n";
}
Make sure you have use strict;
and use warnings;
at the beginning of every Perl script you write. Those directives enable perl
to catch errors and warn about certain possibly erroneous code. As a beginner, you might want to couple those with warnings
with diagnostics to get more detailed information.
These are very handy, especially when starting out with Perl as they help you prevent shooting yourself in the foot.