孤獨者 - 心在黑暗裡旅行 ...... ...
至尊會員
遊蕩的過客 - 枉入紅塵若許年 .. ...
# 取得時間的副程式 sub get_time { # 取得秒, 分, 時, 日, 月, 年 my ($sec,$min,$hour,$day,$mon,$year)=localtime(time); # 月比實際少一, 所以加 1 $mon++; # 判斷是否為個位數, 若是則在前面補 0 if (length ($mon) == 1) {$mon = '0'.$mon;} if (length ($day) == 1) {$day = '0'.$day;} if (length ($hour) == 1) {$hour = '0'.$hour;} if (length ($min) == 1) {$min = '0'.$min;} if (length ($sec) == 1) {$sec = '0'.$sec;} # 年比實際西元年少 1900, 所以加上 1900 $year+=1900; # 組合成完整的時間 my $alltime="$year/$mon/$day $hourminsec"; }
#! /usr/bin/perl $now = get_time(); print "$now\n"; sub get_time { my ($sec,$min,$hour,$day,$mon,$year)=localtime(time); $mon++; if (length ($mon) == 1) {$mon = '0'.$mon;} if (length ($day) == 1) {$day = '0'.$day;} if (length ($hour) == 1) {$hour = '0'.$hour;} if (length ($min) == 1) {$min = '0'.$min;} if (length ($sec) == 1) {$sec = '0'.$sec;} $year+=1900; my $alltime="$year/$mon/$day $hourmin:$sec"; }
查看詳細資料
TOP
#! /usr/bin/perl $str="I don't like it! John."; if ($str =~ /like it/) { print "找到了!\n"; } else { print "沒有這個樣式!\n"; }
. 代表任意字元,但不包括換行字元 \n * 代表比對成功的次數是 0 或 0 次以上 + 代表比對成功的次數是 1 或 1 次以上 ? 代表比對成功的次數是 0 或 1 次 (若用在其它數量修飾子之後,則表示 "比對採不貪心的模式") ^ 代表字串開頭 $ 代表字串結尾 \ 將其後的字元跳脫,使其回歸原字元的涵義,如:\\ , \. , \@ , \? , \* | 樣式中的 或 ( ) 群集 [0-9] 一個數字字元 [^0-9] 非數字 [a-z] 一個英文小寫字母 [^a-z] 非小寫 [A-Z] 一個英文大寫字母 [^A-Z] 非大寫 [a-zA-Z] 英文字母 [^a-zA-Z] 非英文字母 \d 同 [0-9] 數字 \D 同 [^0-9] 非數字 \w 文字, 同 [a-zA-Z0-9_] \W 非文字,同 [^a-zA-Z0-9_] \s 空白字元,同 [ \t\n\r\f] \S 非空白字元,同 [^ \t\n\r\f] \b 單字的邊界 \B 非單字的邊界 \xnn 16 進位數 nn \nnn 8 進位數 nnn {n} 剛好 n 次 {n, } n 次以上 {n, m} 至少 n 次,但不能超過 m 次
m/樣式/ 可簡寫成 /樣式/ 其中 / 可換成其它符號,但此時不能將 m 字元簡掉,如: m!樣式! m#樣式# 可加上修飾子:i m o s x g 用法:/樣式/修飾子 i 不計大小寫 m 視字串為多列 o 只編譯一次,以加快迴圈處理速度 s 當含有換列符號時,仍視為一列 x 允許含有註解,並忽略空白 g 全域比對 =~ 表示比對符合 !~ 表示比對不符合 $& 代表最後一次成功比對的字串 $` 代表比對到的字串之前半段所有字串 $' 代表比對到的字串之後半段所有字串
if ($my_best_like =~ /Perl/) { print "Bingo!!!\n"; } else { print '$%#@#$&*%$#@!', "\n"; }
if ($my_best_like =~ /Perl/i) { print "Bingo!!!\n"; } else { print '$%#@#$&*%$#@!', "\n"; }
$_ = "I want to go to San Francico. I want to!"; @word=/want/g; # 傳回比對到的字串 print "@word\n"; 輸出: want want
chomp($IP=<STDIN>); if ($IP =~ /\d+\.\d+\.\d+\.\d+/) { print "$IP 可能是合法的 IP 位址!\n"; }
chomp($IP=<STDIN>); if ($IP =~ /(\d+)\.(\d+)\.(\d+)\.(\d+)/) { print "第一個 ip : $1\n"; print "第二個 ip : $2\n"; print "第三個 ip : $3\n"; print "第四個 ip : $4\n"; }
$msg_start='^From\s.*?@?.*?\s+?\w+\s\w+\s\d+\s\d+:\d+:\d+\s\d+'; if ($line =~ /$msg_start/) { print "一封信件的開始!\n"; }
$msg_start='^From\s.*?@?.*?\s+?\w+\s\w+\s\d+\s\d+:\d+:\d+\s\d+'; # $line 若不符合 $msg_start 這個樣式 if ($line !~ /$msg_start/) { print "不是一封信件的開始!\n"; }
while(<DATA>) { print if /Kill/i; } __DATA__ Kill you, kill me. Someone kill yes do it Just make. Marry killed by money.
while(<DATA>) { print if /Kill|Someone|Just/; } __DATA__ Kill you, kill me. Someone kill yes do it Just make. Marry killed by money. 輸出: Kill you, kill me. Someone kill Just make.
$_ = "OK! Let's go! Very happy!"; /Very/; print '$& ==> ' . $& . "\n"; print '$` ==> ' . $` . "\n"; print '$\' ==> ' . $' . "\n"; 輸出: $& ==> Very $` ==> OK! Let's go! $' ==> happy!
s/樣式/欲置換的字串/ 可加上修飾子:e i m o s x g i m o s x g 意思同 8.3 比對中的修飾子 e 代表將欲置換的字串視為一運算式 s/樣式/欲置換的字串/修飾子
# 將 $line 中的 < 符號,換成 < $line =~ s/</</;
# 將 $text 中的 H1 或 h1 換成 H3 $text =~ s/H1/H3/i;
$text =~ s/(\w+)\@(.+)/帳號:$1 主機名稱:$2/;
$str = "I want to go to San Francico. I want to!"; $str =~ s/San//; # 將第一個比對到的 San 字串置換掉 print $str, "\n\n"; 再者: $str = "I want to go to San Francico. I want to!"; $str =~ s/want//g; # 將所有比對到的 want 字串置換掉 print $str, "\n\n";
while(<DATA>) { s/7/3 + 5 * 2.1/eg; # 因為有加 e 這個修飾子,所以 3 + 5 * 2.1 被視為運算式來執行 # 它會將找到的 7,用 3 + 5 * 2.1 的運算結果來取代 } __DATA__ Marry 6 John 7 Kenny 8 輸出: Marry 6 John 13.5 Kenny 8 以下是 CGI 程式中經常用的解碼程式片段: $value=~ s/%(..)/pack("c",hex($1))/ge; 因為有加 e 這個修飾子,所以 pack("c",hex($1)) 被視為運算式來執行
tr/字元集/欲轉換的字元集/ y/字元集/欲轉換的字元集/ 可再加上修飾子:c d s d 刪除字元 c 將不在指定字元集中的字元(包括換行字元),換成欲轉換的字元集 s 將重覆字元刪除
$text =~ tr/a-z/A-Z/;
$text="1 abc 23 PID"; $text =~ tr/ //d; print $text, "\n\n"; 輸出: 1abc23PID
$text = 'goodyesMMMllnnnn'; $text =~ tr/a-zA-Z//s; print $text; # 輸出結果: godyesMln 重覆的字元只剩一個。
$text="1 abc 23 PID"; $text =~ tr/[0-9]/*/c; # 將非數字字元換成 * 號 print $text, "\n\n"; 輸出: 1*****23****
$num=56; # $scalar_ref 內含 $num 的位址 $scalar_ref = \$num; # 只要在參考之前加上 $ ,即可取得原參考對象的內含值(即 56) print $$scalar_ref;
@total=(1,2,4); $array_ref = \@total; # 只要在參考之前加上 @ ,即可取得原參考對象,即 @total print @$array_ref;
%all=( mmm => "KKK", nnn => "MMM" ); $hash_ref = \%all; # hash 參考可以利用 -> 來取得其鍵/值 print $hash_ref->{mmm}; # 加上 % 可以取得原雜湊 @keys = keys %$hash_ref;
sub max { my ($a, $b) = @_; ($a > $b) ? $a : $b; } # $sub_ref 為 &max 副程式的參考 $sub_ref = \&max; # 加上 & 即可呼叫該副程式 $max = &$sub_ref(5, 18); print $max;
sub write_it { my $file= shift; print $file "test .....\n"; } open(FHD, "> test.log") || die "$!\n"; # 將檔案代碼 FHD 傳入 write_it 副程式中 write_it(\*FHD); close(FHD);
#! /usr/bin/perl use File::Find; $index=1; # 路徑設定 my $dir=shift || '/home/ols3'; my $tmp="dirlist.txt"; # 開啟記錄暫存檔 open(W, "> $tmp") || die "$!\n"; # 走訪該目錄,注意!!! 此處傳入一個回呼副程式 doit 的參考:\&doit find(\&doit, $dir); close(W); # 動作區 sub doit { print_process_status($index); print W "$File::Find::name\n"; $index++; } sub print_process_status { my $i=shift; my $j = $i % 4; SWITCH : { $j == 0 && do { print STDERR " (|)\r"; last SWITCH; }; $j == 1 && do { print STDERR " (/)\r"; last SWITCH; }; $j == 2 && do { print STDERR " (-)\r"; last SWITCH; }; $j == 3 && do { print STDERR " (\\)\r"; last SWITCH; }; } }
ncftp ftp2.tnc.edu.tw cd /pub/unix/perl/CPAN/modules/by-module/ cd DBI get DBI-1.37.tar.gz quit tar xvzf DBI-1.37.tar.gz cd DBI-1.37 # 設定 perl Makefile.PL # 編譯 make # 測試 make test # 安裝 make install
1. 切換成 root:su - 2. 執行 perl -MCPAN -e shell 以進入 CPAN 的交談介面中, 第一次執行時,會詢問您一些相關設定問題,請按您的環境來回答, 大部份部問題只要按 Enter 即可。 初始化的設定結果,它會寫在 CPAN 的 Config.pm 中, 可能的路徑例子如下: /usr/local/lib/perl5/5.8.0/CPAN/Config.pm 但您的平台未必我的一樣,請勿直接套用。 若您要改變欲 CPAN 的站台,可修改 Config.pm 中的 'urllist', 例如:'urllist' => [q[訪客無法瀏覽此圖片或連結,請先 註冊 或 登入會員 。]], 可將抓檔的站台設為敝中心 FTP2 的 CPAN。 3. 安裝 在提示符號下,執行 install DBI: cpan> install DBI 它會幫你自動完成設定安裝。
#! /usr/bin/perl use DBI; # 宣告使用 DBI 模組內的所有方法 my $db="test"; my $host='localhost'; my $user='root'; my $password='ppp123'; ........ ........
本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。