perl 语言(数组)
perl 数组是一个储存多个标量的列表。
数组的赋值和读取
Perl 数组的读取是通过 $list[index] 来实现的
如:
#!/usr/bin/perl
@animals = ('cat','fish','dog','ant');
$str = @animals[2];
# dog
print $str."\n";
# dog
print $animals[2];
给数组赋值可以有以下三种方法:
#!/usr/bin/perl
@array1 = qw/12 23 34/;
@array2 = (12,23,34);
@array3[0] = 12;
@array3[1] = 23;
@array3[2] = 34;
# 12 23 34 12 23 34 12 23 34
print "@array1\t@array2\t@array3\n";
# 3 3 3
print $array1."\t".$array2."\t".$array3;
这里,数组可以通过qw/…/ , 直接赋值和索引赋值来实现,但是注意的是,如果在对数组的引用中出现了“." 这种表示字符串拼接的符号,数组的内容就会转换成数组的个数。
连续输入数组
#!usr/bin/perl
@num = (1..9);
@alphabet = (a..z);
# Output number
foreach $number (@num)
{
print $number."\t";
}
print "\n";
$alphabet = join "\t", @alphabet;
print $alphabet;
数组的基本函数
1. push
将列表数值放在数组的末尾。
如果我想去餐厅吃饭, 要排号就可以用push来表达
#!usr/bin/perl
# restaurant number
# there already have been 24 customers.
@queue = (1..24);
# push my information into program
push @queue, "Monica";
# get my number
$number = @queque
print "$number\n";
2. pop
删除数组最后一个值
pop @material
如果需要从尾部去掉一个成分,则可以写成:
#!/usr/bin/perl
@names = ("Monica","Fermina","Ariza","Jane");
foreach $name (@names)
{
if $name not eq "Fermina"
{
pop @names;
}
}
3. shift
弹出数组第一个值,并返回它,数组的索引值也依次减一,即移除数组第一个值
#!/usr/bin/perl
# please input your codes
@a = ("Monica","Fenima","Ariza","Trump","Carlo");
shift @a;
print @a;
4. unshift
在开头添加一个元素
#!/usr/bin/perl
@a = ("Monica","Fenima","Ariza","Trump","Carlo");
unshift @a, "Ben";
$a = join "\t", @a;
print $a;
字符串转数组
1 split
$name = (“Monica Femina Elan Trump”);
#!/usr/bin/perl
$name_list = "Monica Fermina Ariza Elan Trump";
# split this string by " "
@names = split " ",$name_list;
"""
output results
Monica
Fermina
Ariza
Elan
Trump
"""
foreach $name (@names)
{
print $name;
print "\n";
}
数组转字符串
数组变成字符串,意义上就是将各个字符连接起来(join),所以要用到join函数
如下:
#!usr/bin/perl
#please input your codes
# initialization
@country = ("China","America","France","Australia");
# transform them into a list
$CountryName = join " - - ", @country;
# Output: Monica-Fermina-Grace-Paris
其中, join 也可以写成 join(" ",@list) 的形式。但是与我而言。第一种表示比较简单。
截断数组
想从数组中得到特定位置的元素,可以这么表达:
#!/usr/bin/perl
@countries = qw/China America France Australia/;
@country = @countries[2..4];
# 3
print @country."\n";
# France Australia
print "@country/n";
# China America France Australia
print @countries
替换数组元素 (splice)
splice @array, OFFSET, LENGTH, LIST
例子:Jerry的成绩单打错了,需要调整。
#!/usr/bin/perl
@gradelist = (95,96,70,88,73,94,87,92,89);
splice @gradelist, 2, 3, (81,79,80);
# Jerry's grade list is 95 96 81 79 80 94 87 92 89
print "Jerry's grade list is ", join "\t", @gradelist,"\n";
参考文献
https://www.runoob.com/perl/perl-arrays.html