Sep 2, 2008

perl 筆記

字串運算子 (比 ASCII表)
. => "my"."doc" = "mydoc" 字串相加
x => "yes"x2 = "yesyes" 複製字串
eq => "my" eg "MY" = false 字串相等
ne => "my" ne "MY" = true 字串不相等
lt => "abc" lt "bc" = true 逐個字元比對兩字串大小,看是否前ㄧ個比後一個小,not equal 時就停止比較,等於就持續往後比較
gt => "abc" gt "bc" = false 逐個字元比對兩字串大小,看是否前ㄧ個比後一個小
cmp => "abc" cmp "bc" = 表較兩個字串,傳回有三種 , 前大於後為 1, 小於為 -1, 等於時為0

處理字串函數
length(字串值) =>傳回整數,空值傳回0

chomp($num)
//chomp 函數去除$num 變數值的最後換行符號 , 回傳值為被刪除的字元個數
chop($num)
//chomp 函數去除$num 變數值的最後ㄧ個字元 , 回傳值為被刪除的字元
$/ => 指定 chomp 要去除的字元, 預設是 "\n" 換行符號

split(/模式/,字串) => @str=split(/&/,"u=brian&password=good") => $str[0]="u=brian" , $str[1]="password=good"
substr(字串,字串起始位置索引值,字串長度)
改變大小寫=> lc , uc , lcfirst, usfirst
index(原字串,要找尋的子字串,偏移量), 若未找到會回傳-1
pack 與 unpack => pack(指定的格式,需解碼的字元) => pack("u","這是測試") , 編碼為 uuencode 格式.


$name=;
// <> 代表從檔案代碼中讀出資料

my($sec,$min,$day,$mon,$year)=@{[localtime(time)]}[0,1,2,3,4,5];
$year +=1900;
$mon +=1;
print "現在時間 $year/$mon/$day $hour:$min:$sec";
//time 函數傳回 從1900 道現在的秒數, localtime 函數轉換為年用日分時秒.$time[6] 代表 星期幾, $time[7] 代表一年的第幾天

//單引號內無變數內插, 雙引號會有變數內插

//perl 內部變數
$_ => 預設變數($ARG), 凡是程式需要純量資料作為輸出而我們沒有提供資料的地方時,perl就會用 $_ 來代替,如 print 就等於 print $_.
$& => 成供比對的字串
$. => 檔案代碼目前讀的行
$$ => 執行該程式的process id
$0 => 所執行的perl程式的檔名
$# => 輸出數值的格式
$] => perl 編譯器的版本
$^0 => Perl 編譯器所處的作業系統名稱
$ARGV => 目前從<>讀取的檔案名稱
@ARGV => 包含指令行輸入的陣列
@_ => 函數的參數陣列
$|=1; => Autoflush STDOUT


${name}s => 此種表示法可把變數取得後加上s 字元

":" 與 "空白" 皆會切割相鄰變數名稱

my $var2=@var1
// $var2 的值為 @var1 陣列的個數

//陣列的索引值是從 0 開始
$#array=99; => 表定義了一個有100的資料欄位的陣列 @array
$#array=-1 => 表刪除整個陣列並釋回佔用的記憶體

$string=shift;
$logfile=pop;
// shift函數 用來把陣列的第一個元素取出 並指定給 $string
// pop 函數用來把最後一個元素取出, 並指定給 $logfile

//倒裝與And 語法:若 if內的結構只有一行敘述
print "這是測試" if($input > 30);

($input > 30) and print "這是測試" ;

// for 與 foreach
@array=(this,is,a,book);
for $item(@array){
print $item,"\n"
}

@array=(this,is,a,book);
foreach $item(@array){
print $item,"\n"
}


常規表示式
=~ => 運算子用於指定要處理的字串純量變數,可和 m// , s// , 與 tr// 搭配使用, 成功傳回 true , != 則與=~ 傳回相反的判斷
m// => 比對函數, m 可以省略, / 可以用任何的符號來取代如 m!!
s// => 搜索字串並取代
$string = "Yes it is"
if($string=~m/YES/){
print "Find yes";
}
else
{
print "No yes";
}

[] => 可用來表示比對其中的任何一個字

0 意見: