这不是一般性问题。我问过这个问题,因为我对创建Perl数组很困惑。
答案 0 :(得分:5)
如果你遇到这样的基础问题,你应该去看看perldoc perlsyn
。它涵盖了语言语法,应该告诉你需要什么。
答案 1 :(得分:2)
词法数组和哈希值为空。您可以使用my
创建一个新的词法数组或哈希:
my @array;
my %hash;
在大多数情况下,您应该只使用词法数组和哈希,但是您可以使用our
创建包数组和哈希:
our @array;
our %hash;
在这种情况下, @array
和%hash
可能包含也可能没有数据(如果之前已创建,则不会清除其内容)。这些变量的名称是词法范围的,但数据是包范围的,所以如果你说:
{
our @a = (1 .. 5);
}
{
our @a;
print "@a\n";
}
它仍然会打印"1 2 3 4 5\n"
。
有很多方法可以清除哈希或数组。最常见的是为其分配一个空列表:
@array = ();
%hash = ();
您还可以使用undef
清除哈希或数组:
undef @array;
undef %hash;
pop @array while @array;
shift @array while @array;
splice @array, 0, scalar @array;
您还可以通过为其名称的$#array
形式指定一个数字来修改数组和数组中的元素数。如果指定负值,则清空该数组:
$#array = -1;
答案 2 :(得分:1)
您可以通过分配列表(包括空列表)来创建数组和哈希值:
my @a1; # empty array
my @a2 = 'a';
mh %h1; # empty hash
my %h2 = 'a'; # a => undef
my %h3 = ('a', 'b'); # 'a' => 'b'
my %h4 = (a => 'b'); # 'a' => 'b'
您可以通过显式指定空列表来清除数组或哈希:
@a2 = ();
%h3 = ();
答案 3 :(得分:0)
听起来你可以从阅读tutorials and beginners guides到Perl中受益。有很多例子可以完全满足你的要求。
要记住的一点是哈希和数组几乎相同(概念上),但数组由整数索引,哈希用字符串索引。从语法上来说,你会以不同的方式引用这些指数,但从概念上讲,这就是你如何看待它们。
答案 4 :(得分:0)
创建数组:
my @array = (1, 2, 3, 4);
创建哈希:
my %hash = (
one => 1,
two => 2,
three => 2,
four => 2,
);
清除数组或哈希:
@array = ();
%hash = ();
创建空数组/哈希:
my @array = ();
my %hash = ();