Perl for循环错误

时间:2013-05-14 06:14:34

标签: arrays perl perl-data-structures

我是Perl的新手,我试图使用Strawberry perl 5,版本16执行下面编码的简单程序:

#!usr/bin/perl

use warnings;
use strict;

my @array= {1,2,3,5,7,9};
my $i;

foreach $i (@array)
{
print qq(Element is $i\n);
}

我得到以下输出:

Element is HASH(0x3f8b4c)

然而,我应该收到的输出是:

Element is 1
Element is 2
Element is 3
Element is 5
Element is 7
Element is 9.

感谢你的帮助。

3 个答案:

答案 0 :(得分:10)

要初始化数组,请使用列表,如

my @array = (1, 2, 3, 5, 7, 9);

注意:parens只是排除优先级,它们不是特殊的数组语法。

Curlies分隔匿名hashref,如

my $foobar = {
  foo => "bar",
  baz => "qux",
};

所以发生的事情是你为数组分配了一个匿名hashref的列表,就像

一样
my @array = ({
  1 => 2,
  3 => 5,
  7 => 9,
})

会起作用。

答案 1 :(得分:0)

#!usr/bin/perl

use warnings;
use strict;

my @array= (1,2,3,5,7,9);

foreach my $i (@array)
{
print "Element is ", $i,"\n"; ##Or as u want..many ways to do things in perl
}

试试这样。数组应该在括号中。用于哈希的卷曲括号。

答案 2 :(得分:0)

你应该使用()来定义数组而不是{},{}用于定义散列

#!usr/bin/perl

use warnings;
use strict;

my @array= (1,2,3,5,7,9);
my $i;

foreach $i (@array)
{
  print qq(Element is $i\n);
}