perl 子過程 列表處理

2021-06-04 13:27:04 字數 1930 閱讀 8001

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...