2008年2月24日 星期日

Perl 常用的一些函式

push/pop/shift/unshift

將 Array 當作 linked list 處理
push - add values to end of array
pop - remove last value from end of array
unshift - add values to front of array
shift - remove first value from front of array


範例
push(@list, $bar);
push(@list, @rest);
$tos = pop(@list);
while ( $arg = shift(@ARGV) ) { }
unshift( @ARGV, 'zeroth arg', 'first arg');


split/join

split 能夠將一個字串以特定的分隔字串分成許多段, 並傳回一個 Array, 由於這個分隔字串是以正規表示式方式來指定, 使用上非常方便

範例
@list = split(/[, \t]+/, $expr);
範例
while () {
($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(/:/);
}

join 則與 split 功能相反

範例
$line = join(':', $login, $passwd, $uid, $gid, $gcos, $home, $shell);


sort/reverse/grep

sort 用來將一個 array 中的元素以 Ascii 排序後, 傳回一個新的 array
ps: 在利用 sort 在對 array 排序時, 可以自訂排序的方法, 詳細的說明請看這裡

reverse 用來將一個 array 中元素以與原來相反方向排列, 傳回一個新的 array,
reverse 也可以用來將 Hash 中所有的 key 與 hash value 對調

範例
print sort @list;
@list2=reverse sort @list;

grep 會根據給定的一個正規表示式對一個 array 的所有元素作比對, 找出所有比對符合的元素, 組合成一個新的 array 傳回來

@lines=grep(!/^#/, @lines); # delete all lines starting with #


keys/vlaues/each

這三個是專門給 Hash 變數用的函式

keys 傳回一個 hash 中所有的 key 組成的 array
values 傳回一個 hash 中所有的 hash value 組成的 array
each 則是自 hash 中一次抓出一對 (key, hash value) 出來

範例
foreach $key (keys %array) {
printf "%s is %s\n", $key, $array{$key};
}
print reverse sort values %array;
while (($key,$value) = each %array) {
printf "%s is %s\n", $key, $value;
}


chop/chomp

chop 移除字串的最後一個字元, 通常都是用在從檔案輸入一行後, 移除其後的換行字元
chomp 功能與 chop 類似, 但只有當最後一個字元是換行字元時才會將其移除

範例
chop($line);
chop ($host = `hostname`);
while () {
chop;
...
}

sprintf/substr/length/crypt/index/rindex

Perl 上的這些函式基本上用法都和 C language 中同名的函數類似.
詳細的說明請看

sprintf, substr, length, crypt, index, rindex

沒有留言:

關於我自己

Aspire freedom , Hope to do Soming make self complete ~