PERL入门学习之三

来源:互联网 发布:重装系统数据丢失 编辑:程序博客网 时间:2024/05/17 03:12

遍历数组:

#遍历数组
@f = qw(we rt df gh cd as dc);
for($index = 0; $index < @f; $index++ ){
  print "遍历数组第${index}个值是:${f[$index]}/n";  
 }
 
#foreach应用可以跟佛如互换使用
foreach $each(@f){
 print "使用foreach输出数组:$each. /n";
}
 
请注意,在一个foreach循环中,迭代器并不只是设置为列表中的每个元素的值,它实际上是对列表的元素的引用。因此,
在上面这个foreach循环中,如果修改该循环中的 $each,就能修改@f中的对应元素。

#修改each的值
foreach $each(@f){ 
 $each = "$each 是随意字母组合。";
 print "输出修改后的数组:$each. /n";
}

数组和标量之间的转换:
split可以将标量分解成数组:
@words = split(/ /,"a b c d");
$size = @words;
print "数组的长度:$words[0]和数组的长度是:$size";
#如果匹配的//之间没有空格的话,分解出来的数组就包含空格,将有7个值的数组。
#这样的没有空格的//就便于将一个单词(标量)分解成单个字符的数组。
@words = split(//,"weather");
$size = @words;
print "数组的长度:$words[0]和数组的长度是:$size /n";

若要用数组来创建一个标量,也就是进行split的反向操作,可以使用perl的join函数。join
函数取出一个字符串和一个列表,使用该字符串将列表的各个元素组合在一起,然后返回产
生的字符串。
$number = join(',',(1..10));
print "输出join组合的字符串:${number} /n";
#使用split将其进行拆分为数组:
@words = split(/,/,$number);
print "拆分的数组的值:@words /n.";
print "数组的第一个值:$words[0]/n";

#拆分和再组合的共用:
$str = "abcdefg";
$words = join('-',split(//,$str));
print "输出拆分组合后的标量:${words} /n";

#给数组排序:标量的排序是以ASC||的编码来排序的,但他的排序并不按值来排序的。
@words = qw {d i e p f a};
#@words = sort @words;
print "排序后的新数组:@words /n";
print join('-',sort @words);

#数值的排序方式请看如下:
#使用sort给数字排序:

@numbers = qw {3 6 4 9 12 78 34 21};
@words = sort { return(1) if($a < $b);
return(0) if($a == $b);return(-1) if($a > $b) ;
} @numbers;
print "输出words的值:@words /n";
@words = sort { return(1) if($a > $b);
return(0) if($a == $b);return(-1) if($a < $b) ;
} @numbers;
print "输出words的值:@words /n";
两个变量 $a和$b被设置为列表的两个元素。代码块的任务是:如果$b小于、等于或大于$a,
则分别返回-1、0或1。


#另一种方式的排序
@words = sort { $a > $b ;
} @numbers;
print "输出words的值:@words /n";
#另一种方式的排序
@words = sort { $a < $b ;
} @numbers;
print "输出words的值:@words /n";
飞船运算符:如果它左边的操作数小于右边的操作数,那么它返回-1,如果左边的操作数大于右边的操作
数,则返回0。

#倒序操作:reverse
$words =  reverse("PERL");
print "输出words的倒序值:$words /n";

@lines = qw (I don't like egg and han);
$words = join(' ', reverse @lines);
print "输出words的倒序值:$words /n";

原创粉丝点击