加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl 学习笔记(7)

发布时间:2020-12-16 00:21:45 所属栏目:大数据 来源:网络整理
导读:基本构建的堆栈:列表与数组 在本章中将要学习:(1)如何填充和清空数组 (2)如何逐个元素查看数组 (3)如何对数组进行排序和输出? (4)如何将标量分割成数组,以及如何将数组重新合并成标量。 一、将数据放入列表和数组 (5,'apple',$x,3.14)?? 这就是

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

在本章中将要学习:(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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读