perl的一些小函数——split、join、sort

有时候,我们需要将一个字符串或一行文本通过某种方式转换为单个的元素存储在数组中,或者将许多元素通过某种分割符,将他们组合成一个字符串。perl刚好就提供了这样的功能,通过split或者join分割或组合元素,下面我们来看一个例子:

  1. #! /usr/bin/perl -w

  2. my $str1 = "1,2,3,4,5,6,7,8,9,0";

  3. my @array = split(/,/,$str1);

  4. print "@array\n";

  5. my $str2 = join('-',@array);

  6. print "$str2\n";

程序的执行结果如下:

  1. D:\perl>perl split.pl

  2. 1 2 3 4 5 6 7 8 9 0

  3. 1-2-3-4-5-6-7-8-9-0

在上面的程序中,我们定义了一个字符串str1,我们想将字符串中连接符“,”替换为“-”。我们首先通过split将字符串中的元素分割开,存储在数组array中,然后再通过join将数组中的元素通过“-”组合为一个新的字符串。

呵呵,这个地方我们只是通过这个例子简单的介绍一个split和join的使用,其实如果你对正则表达式很清楚的话,直接替换就可以了,根本不用这么复杂。

另外我们也可以将这个例子再简化一下,用一条语句来实现:

  1. $str2 = join('-',split(/,/,$str1));

当然,使用split函数你需要对正则表达式有一点了解,因为split中/,/就是一个正则表达式,通过这个正则表达式来匹配后面的$str1中的分隔符。

三、对数组元素进行排序——使用sort函数

程序:

my @line=qw /12 34 9 12 44 3 11 67 23 1 4 1 7 3 0/;

print "The sorted number is : ";

foreach my $item(sort {$a <=> $b} @line){

print "$item ";

}

结果:

The sorted number is : 0 1 1 3 3 4 7 9 11 12 12 23 34 44 67

通过改变$a与$b的位置可以降序排序,若将<=>换为cmp,则可以进行以ASCII进行排序。