1、定義子過程最普通的例子:
sub razzle
razzle();
#:省略了輸入引數和輸出(返回值)。
#:perl向子過程傳入資料和子過程傳出資料的方法:所有傳入的引數被當成單個平面標量列表,類似的多個返回值也被當做單個平面標量列表返回給呼叫者;當使用list也一樣,任何傳入的陣列或雜湊的值都代換到乙個平面的列表裡面,同時也失去了他們的標識;
#:所有出入perl過程的引數都是以@_身份傳入的。如果呼叫兩個引數的函式,他們在函式內部可以作為@_陣列的前兩個成員訪問:$_[0]和$_[1];
#:@_是乙個本地陣列,它的值是實際標量引數的別名(引用傳參),因而如果修改了@_中的成員,那麼同時也修改了對應的實際引數的值。
#:子過程的返回值是過程最後乙個表示式的值。或者你可以在子過程的任何乙個地方明確使用乙個return語句來返回值並且推出子過程。
2、引數列表技巧
#:將 @_ 的值拷貝到乙個 my 列表,這樣就 可以方便使用這些正式引數( 不一樣的是,這樣拷貝就將引用傳參的語義變為了傳值傳參) ,下面是乙個典型的例子:
sub ayetenv = $value unless $env;
}
#:不要傳值引數的情況,求最大值:
sub max
return $max;
}$bestday = max($mon, $tue, $wed, $thu, $fri);
#:將@_填入乙個雜湊
sub cofi == 9;
}cofi(password => 'love', verbose => 9, socre =>0);
#:通過形參修改原始值
upcase ($v1, $v2);
sub upcase
}($v3, $v4) = upcase($v1, $v2);
#:返回乙個copy,不修改原始值
($v3, $v4) = upcase($v1, $v2);
sub upcase
return wantarray ? @parms : $parms[0];
}
#:請其他的呼叫上面的函式
#!/usr/bin/perl
use strict;
use warnings;
my @list1 = qw/yan zeng li/;
my @list2 = qw/wang lu/;
sub upcase
print "\n";
return wantarray ? @parms : $parms[0];
}my @newlist = upcase(@list1, @list2);
foreach (@newlist)
print "\n";
輸出結果如下:
yan
yan zeng li wang lu
#:從例子可以看出,@_中存在的不是列表本事,而是把列表裡面的元素乙個乙個的複製到陣列中。 perl 時間處理
usr bin perl use posix qw strftime my day ymd strftime y m d localtime time 86400 days my day ymd strftime y m d localtime time 86400 days print day y...
perl處理中文
perl從5.6開始已經開始在內部使用utf8編碼來表示字元,也就是說對中文以及其他語言字元的處理應該是完全沒有問題的。我們只需要利用好encode這個模組便能充分發揮perl的utf8字元的優勢了。下面就以中文文字的處理為例進行說明,比如有乙個字串 測試文字 我們想要把這個中文字串拆成單個字元,可...
perl時間處理
1 格式化輸出當前時間 perl e use strict use posix qw strftime print strftime y m d h m s n localtime time 2 時間格式轉換 perl e use time local use time piece s 2011 0...