1

我是 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.

感谢您在这方面的帮助。

4

3 回答 3

10

要初始化数组,请使用类似的列表

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

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

卷曲分隔匿名 hashref,例如

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

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

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

本来可以的。

于 2013-05-14T06:16:33.867 回答
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
}

像这样试试。数组应该在括号中。用于散列的花括号。

于 2013-05-14T06:43:19.933 回答
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);
}
于 2013-05-14T08:45:01.027 回答