文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>perl数组操作

perl数组操作

时间:2010-04-22  来源:auqfpe

数组是perl里面一种非常有用的东西。在实际的编程过程中,用得很普遍,其定义数组的方法:

@a=(“hello”, “well”, “good”);

@b=(1,2,3,4,5,6,7);

@b的定义方式还可以写成下面的形式:

@b=(1..7); #这种方式主要用在一个大的有序范围内的数组定义,如字母的可以定义为   @b=("a".."z");

如果我们要访问数据,就是通过下标的形式来访问:如:print $b[0];

给数组重新赋值如下操作:

#!/usr/bin/perl -w

use strict;

my @coms;

@coms = (1..10);

print "$coms[0]\n";

$coms[0]=15;

print "$coms[0]\n";

print "\n@coms\n";

输出结果:

 

1

15

15 2 3 4 5 6 7 8 9 10

 

也可以同时一次赋多值给一个数组:@b[5,7,9]=(45,56,67);

数组之间相互拷贝,可以用下面的方式:

@d=@c;

perl的数组是可以动态改变大小的。因此我们可以追加,删除数组内的元素。追加一个元素可以使用这种方式:

@c=(@c,"hello");

perl里面有一个专门的函数用来惊醒追加操作叫做push,push的使用方法如下:

push(@c,"hello");

push(@c,("hello","hihi"));

push(@c,@a);

这里可以看到,可以给数组追加一个元素,一组元素甚至另外一个数组。另外,在perl的数组中可以放不同类型的标量。这一点在c程序员的眼中可能有点怪异,但是如 果记住perl里面的一切都是引用就可以了。或者理解成这是一个void类型的指针的数组。有了push,就一定有pop。pop就是从数组的最后取出一个元素。用法为:

pop(@a);

既然可以从数组的末尾加入元素,那么一定也可以从数组的开头加入元素。那么这个功能是由unshift函数提供的。用法为:

unshift(@c,"hello");

unshift(@c,("hello","halloha"));

unshift(@c,@a);

----------------------------------------------

#!/usr/bin/perl -w

use strict;

my @coms;
@coms = (1..10);
unshift(@coms,"abc");
print @coms;

其结果为:

abc12345678910

这样就把abc放到的数组的最前面.
有了unshif就一定会有shift了。shift的功能是从数组的开头取出一个元素。用法为:

#!/usr/bin/perl -w

use strict;

my @coms;
my $m;
my $n;
@coms = (1..10);
print $m=shift(@coms);
print "\n";
print $n=shift(@coms);
print "\n";

其结果为:


1
2

有了操作数组两端的函数那么一定也会有操作数组中间部分的函数,这个函数就是splice,splice函数有三个作用。第一个作用是向数组中间的一部分插入内容。例如:

@d=(1..8);

my @e=("a".."c");

splice(@d,2,2,@e);

将会得到12abc5678,注意这里是从第二个开始插入,不是从下标为2的元素开始插入的。splice的第二个功能是删除,例如在刚才的代码上面再加上:

splice(@d,2,6);

将可以得到125678;splice的第三个功能就是删除到末尾。语法为:

splice(@d,2);

就是从第二个开始,删除到末尾。我们还应该有一个可以把整个数组合并成一个标量的函数。这个函数就是join,join有两个参数,第一个参数是合并时放在元素之间的分割符,第二个是进行操作的数组。 例如:

my @g=(1,2,3);

join(" ",@g);

将可以得到“1 2 3”,还有三个函数我们昨天已经见过了,就是undef,chop和chomp。undef(@a); 的作用是把@a的内容清空。chop(@a); 的作用是把数组内每个元素的末尾去一个字符。而chomp(@a); 的作用则是把数组内的每一个元素的末尾的换行符去掉。我们还应该介绍一个函数就是scalar,这个函数取得数组的长度。例如:

my @h=(1,2,3);

scalar(@h);

将可以得到3。但是我们经常不这么用,因为在将数组向标量转换时就会返回数组的长度,例如下面的操作就可以。

my @i=(1,2,3,4);

print @i."\n";

相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载