Perl 学习笔记(7)

基本构建的堆栈:列表与数组

在本章中将要学习:(1)如何填充和清空数组 (2)如何逐个元素查看数组 (3)如何对数组进行排序和输出  (4)如何将标量分割成数组,以及如何将数组重新合并成标量。

一、将数据放入列表和数组

(5,'apple', $x , 3.14)   这就是个列表的例子

如果列表只包含简单的字符串,而用单引号将每个字符串括起来又太麻烦,那么就可以用qw运算符

qw(apples oranges 45.6)

上面代码的意思就是跟这个代码一样

('apple','oranges','45.6','$x')

范围运算符 (1..10)        构成一个包含1到10之间的所有数的列表

=======================================

二、数组

@boy=qw(greg petter bobby)

数组赋值也可以包含其他数组甚至空列表

@copy=@origina;

@clean=();

在这里,@original数组的所有元素都被拷贝到新数组@copy中。如果@copy中原先已经拥有元素,那么这些元素就会丢失。

($a , $b, $c)=qw(apple oranges bananers)

在这个例子中,$a被初始化为apple  $b被初始化为oranges

=============================================

从数组中取出元素

若要获得整个数组的内容,最简单的方法是使用双引号中的数组

print "@array";

若要访问一个元素,用$array[index]

还可以将数组划分成分组,称为片   ,使用@标号

@conifers=@trees[5,7]

====================================================

寻找结尾

perl提供两个机制,第一个方法是个特殊变量,其形式是$#arrayname.

@trees=qw(oak cedar maple apple)

print  $#trees            输出3

$size=@array        将@array中的元素数量放入$size中        为4

$array[-1] 是@array得最后一个元素    -2倒数第二个元素

 ==========================================================

对数组进行操作

@flavors=qw(chocolate vanilla strawberry mint)

for ($index=0;$index<@flavors;$index++) {

        print "my favorite is $flavors[$index] and .....";

}

$index被初始化为0,并且按1进行递增,直到到达@flavors. 请记住,@flavors是标量上下文计算的,结果为4.

foreach  $cone  (@flavors) {

        print "I'd like a cone of $cone\n";

}

在这个代码中,变量$cone设置为@flavors中的各个值。

==========================================================

在数组与标量之间进行转换

   将标量转换成数组的方法之一是使用split函数。split函数拥有一个模式和一个标量。

@words=split(/ /, "The quick brown fox");

while (<STDIN>) {

      ($firstchar)=split(//, $_);

      print "The first character was $firstchar";

}

 

@music=('white abum,beatles',

                'graceand,paul simon');

foreach  $record  (@music) {

        ($record_name,$artist)=split(/,/, $record);

}

若要用数组来创建一个标量,也就是进行split的反向操作,可以使用join函数。

$number=join(',' , (1..10));

将字符串1,2,3,4,5,6赋予变量$number

================================================

给数组重新排序

sort函数将一个列表作为参数,并且大体上按照字母顺序对列表进行排序

@chiefs=qw(Clinton Bush Reagan Carter Ford Nixon);

print join(' ' , sort @chiefs);

默认排序次序是ASCII顺序,不能按数值排序

如何按数值大小排序呢?

假设@numbers是包含了许多数字值得数组

@sorted=sort {$a<=>$b;} @numbers;

如果$a小于 等于 大于$b, 则返回 -1  0   1

若要比较字母字符串,请使用cmp运算符。

==============================================

reverse函数能够对字符串的字符进行倒序操作

@lines=qw(I  do  not  like  green eggs and  ham);

print  join(' ' , reverse  @lines);

 

你可能感兴趣的:(perl)