Perl语言学习之数组(Arrays)

这样平凡的日子,柔软又宁静。迎日出,接晚霞,仿佛这就是生活该收敛的地方。可是,总觉得少了点什么?是奋斗么?

Perl语言中的array变量是包含任意数量元素的有序集合。数组中的每个元素都有一个非负整数的索引(index)。

Perl数组是动态的,其不需要在数组变量声明时指定内存,也不需要指定每个元素的数据类型。

Perl数组元素的值可以是标量、数组、散列、文件句柄和undef等。因此,通过在数组的元素中存储任何数据类型的引用,即可以存储任意复杂的数据结构。

Perl数组可以作为一个堆栈队列列表的方式来使用。

我们可以通过下述方式来声明数组。


# Declare an empty hash
my %hash;
# Declare an arraycontaining a number, a string,
# a reference to a hash and another string.
my @items = (42, 'wombat', %hash, 'hello');

我们可以将数组直接“赋值”为标量变量来获取元素数量,即数组的“长度”或“大小”。


$count =@array;


或者根据$#array来获取数组的最大索引值

$highest_index= $#array;

push和pop分别从数组的结尾压入和弹出数据。

push @array, 8;
$x = pop@array;

unshift 和shift分别从数组的开头压入和弹出数据。

unshift@array, 'y';
$x = shift @array;


也可以直接操作数组中任意位置的数据元素


$first_elem= $array[0];
( $first, $third, $fifth ) = @array[0,2,4];


使用split()函数将字符串转换为数组,如下所示:


#!/usr/bin/perl
#定义字符串
$var_test = "w3big";
$var_string = "www-w3big-com";
$var_names = "google,taobao,w3big,weibo";
#字符串转为数组
@test = split('', $var_test);
@string = split('-', $var_string);
@names  = split(',', $var_names);
print"$test[3]\n";
print"$string[2]\n"; 
print "$names[3]\n";


输出:

i
com
weibo


相应地,可以使用join()函数将数组拼接成字符串。

my @animals = ('dog', 'cat', 'rabbit');
print join(', ', @animals);

输出:

dog, cat, rabbit

在实际应用中,foreach循环是非常强大的数组遍历方式。

my @names = ("Foo","Bar", "Baz");
foreach my $n (@names) {
  say $n;
}

输出:

Foo
Bar
Baz


当然,以上只是一些数组的基本用法,关于Perl语言中数组的操作还有更多非常实用的函数,比如sort,reverse,map

Perl中基本数据类型和自带正则表达式的联合使用,是Perl脚本相对与其他语言进行文本处理的优势之处。


" 愿我们都能在平凡岁月里里活成理想的自己。

发布于 2019-08-01 21:49