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 $conen"; } 在这个代码中,变量$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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |