有時候,我們需要將一個字符串或一行文本通過某種方式轉換為單個的元素存儲在數組中,或者將許多元素通過某種分割符,將他們組合成一個字符串。perl剛好就提供了這樣的功能,通過split或者join分割或組合元素,下面我們來看一個例子:
-
#! /usr/bin/perl -w
-
-
my $str1 = "1,2,3,4,5,6,7,8,9,0";
-
my @array = split(/,/,$str1);
-
print "@array\n";
-
my $str2 = join('-',@array);
-
print "$str2\n";
程序的執行結果如下:
-
D:\perl>perl split.pl
-
1 2 3 4 5 6 7 8 9 0
-
1-2-3-4-5-6-7-8-9-0
在上面的程序中,我們定義了一個字符串str1,我們想將字符串中連接符“,”替換為“-”。我們首先通過split將字符串中的元素分割開,存儲在數組array中,然后再通過join將數組中的元素通過“-”組合為一個新的字符串。
呵呵,這個地方我們只是通過這個例子簡單的介紹一個split和join的使用,其實如果你對正則表達式很清楚的話,直接替換就可以了,根本不用這么復雜。
另外我們也可以將這個例子再簡化一下,用一條語句來實現:
-
$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進行排序。