Perl 数组

数组是一种特殊类型的变量,它以列表的形式存储数据,可以使用索引来访问每个元素,索引号对于每个元素都是唯一的。你可以在数组中存储数字、字符串、浮点值等。这看起来很棒,那么我们如何在 Perl 中创建一个数组呢?在 Perl 中,你可以使用 @ 字符后跟要提供的名称来定义数组。

比如,我们在 Perl 中定义一个数组。

my @array

这是我们在 Perl 中定义数组的方式;你可能正在考虑我们需要如何在其中存储数据。在数组中存储数据的方法有很多种。这取决于你将如何使用它。

my @array=(a,b,c,d);

print @array;

输出:

a b c d

这是一个包含 4 个元素的数组。

数组索引从 0 开始并结束到其最大声明的数组大小,在这种情况下,最大索引大小为 3

@array = qw(a b c d);

你也可以用上面的方式声明一个数组。唯一的区别是,它将数据存储到一个数组中,将空白空间作为分隔符。这里,qw 表示引用词。此函数的意义在于生成单词列表。你可以通过多种方式使用 qw 来声明数组。

@array1=qw/a b c d/;

@array2= qw' p q r s'; 

@array3=qw { v x y z};

print @array1;

print @array2;

print @array3;

输出:

abcdpqrsvxyz

假设你要为数组的第 5 个元素赋值,我们可以这样来做,

$array [4] ='e';

顺序数组

顺序数组是你按顺序存储数据的数组。假设你要在数组中存储 1-10 个数字或字母 a-z。你可以用下面的代码,而不用输入所有字母 -

@numbers= (1..10);

print @numbers;                   #Prints numbers from 1 to 10;

输出:

12345678910

Perl 数组大小

我们有一个已经可用的数组,你不知道该数组的大小是多少,那么如何来得到数组的大小呢?

@array= qw/a b c d e/;

print $size=scalar (@array);

我们可以在不使用函数的情况下获得数组的大小吗?答案是可以的。

@array= qw/a b c d e/;

print $size=scalar (@array);

print "\n";

print $size=$#array + 1;                           # $#array will print the Max Index of the array, which is 5 in this case

输出:

5
5

动态数组

上面声明一个数组的方法称为静态数组,这种方法下你知道数组的大小。

什么是动态数组?

动态数组是你声明的数组,但并不指定任何值。那么我们什么时候才能在该数组中存储值?很简单,我们在运行时存储它们。这是一个简单的程序。

我们将使用一些内置的 Perl 函数来完成此任务。

my $string="This is a kind of dynamic array";

my @array;

@array=split('a',$string);

foreach(@array)

{

print "$_ \n;

# This is a special variable which stores the current value.

}

输出:

This is

kind of dyn

mic

rr

y

split 函数根据提供给它的分隔符将 string 的内容拆分为一个数组。这个函数也会从字符串中删除分隔符,在这种情况下,它是 a

Perl 数组的 Push,Pop,shift,unshift:

可以在 Perl 中使用这些函数来添加/删除数组元素。

   - Perl Push:在现有数组的末尾添加数组元素。    - Perl Pop:从数组中删除最后一个元素。    - Perl Shift:从数组中删除第一个元素。    - Perl Unshift:在数组的开头添加一个元素。

Push,Pop,shift,unshift 例子

@days = ("Mon","Tue","Wed");

print "1st : @days\n";

push(@days, "Thu");                                             # adds one element at the end of an array

print "2nd when push : @days\n";

unshift(@days, "Fri");                                          # adds one element at the beginning of an array

print "3rd when unshift : @days\n";

pop(@days);

print "4th when pop : @days\n";                                 # remove one element from the last of an array.

shift(@days);                                                   # remove one element from the beginning of an array.

print "5th when shift : @days\n";

输出:

1st : Mon Tue Wed

2nd when push : Mon Tue Wed Thu

3rd when unshift : Fri Mon Tue Wed Thu

4th when pop : Fri Mon Tue Wed

5th when shift : Mon Tue Wed