Download presentation
Presentation is loading. Please wait.
1
2015/6/27T.B. Chen1 Using PERL 1.PERL 的簡介 2.PERL 的資料型態 3.PERL 的運算子 4. 控制結構與陳述式 5. 副程式 6. 檔案 I/O 與參考指標 7. 常規表示式
2
2015/6/27T.B. Chen2 1.PERL 的簡介 1-1 PERL 的起源及特性 1-1 PERL 的起源及特性PERL 的起源及特性PERL 的起源及特性 1-2 安裝 WINDOWS 版的 PERL 1-2 安裝 WINDOWS 版的 PERL 安裝 WINDOWS 版的 PERL 安裝 WINDOWS 版的 PERL 1-3 執行 Perl script 1-3 執行 Perl script 執行 Perl script 執行 Perl script
3
2015/6/27T.B. Chen3 2.PERL 的資料型態 PERL 有二種資料型別 : 純量 (SCALAR) 與串列 (LIST) 純量 : $ : 純量變數 純量變數 串列 : 1.@: 陣列 陣列 2.%: hash hash
4
2015/6/27T.B. Chen4 3.PERL 的運算子 1. 加 (+), 減 (-), 乘 (*), 除 (/) 2. 次方 (**). $a=$b**6 3.++,+=,--, 4.logical operator: &&, ||, not,or,xor 5. 逗號運算子 :, => 6. 位移 : >>, >,<< ( 只能用於 int 變量.) 7. 關連 : >, =,==,!= ( 數字 ) gt,lt,le,ge,eq,ne,cmp ( 文字 ) gt,lt,le,ge,eq,ne,cmp ( 文字 ) 8. 餘數 : %, 重複 :x
5
2015/6/27T.B. Chen5 4. 控制結構與陳述式 1. 條件陳述式 : 條件陳述式 : 條件陳述式 : if,unless, for, foreach, while, until, do, if,unless, for, foreach, while, until, do, continue. continue. 2. 迴圈控制 迴圈控制 next, last, redo,goto next, last, redo,goto
6
2015/6/27T.B. Chen6 5. 副程式 1. 副程式的宣告 副程式的宣告 2. 副程式的呼叫
7
2015/6/27T.B. Chen7 6. 檔案 I/O 與參考指標 1. 開啟檔案 ( 讀入 ): 語法 : 語法 : open FILEHANDLE, “<filename”; open FILEHANDLE, “<filename”; EX: EX: open IN, “<test.txt”; open IN, “<test.txt”; 開啟一個以 IN 為指標的讀入文件檔. 開啟一個以 IN 為指標的讀入文件檔.
8
2015/6/27T.B. Chen8 語法 : 語法 : open FILEHANDLE, “>filename”; open FILEHANDLE, “>filename”; EX: EX: open OUT, “>test.txt”; open OUT, “>test.txt”; 開啟一個以 OUT 為指標的寫出文件檔. 開啟一個以 OUT 為指標的寫出文件檔. 2. 開啟檔案 ( 寫出 ):
9
2015/6/27T.B. Chen9 3. 參考指標 : (1). PERL 內建 ARRAY 只有 1 維. 若需要用 2 維以上陣列必需使用 ” 參考指標 ”. 維以上陣列必需使用 ” 參考指標 ”. (2). 何謂參考指標 ? 即 : 將 Array 或 Hash 用 Scalar 代替. 即 : 將 Array 或 Hash 用 Scalar 代替. (3). 使用規則 : 使用 ”\” 符號宣告參考指標. 使用 ”\” 符號宣告參考指標. $a=\@array; $a=\@array; 變數 a 是 陣列 array 的參考指標. 變數 a 是 陣列 array 的參考指標. $a=\%hash; $a=\%hash; 變數 a 是 HASH hash 的參考指標. 變數 a 是 HASH hash 的參考指標.
10
2015/6/27T.B. Chen10 4. 實例演練 -1: print "Using reference make 2d array.\n"; print "Using reference make 2d array.\n"; @a=(1,2,3); @a=(1,2,3); @b=(4,5,6); @b=(4,5,6); @c=(7,8,9); @c=(7,8,9); $a1=\@a;$a2=\@b;$a3=\@c; $a1=\@a;$a2=\@b;$a3=\@c; @d=($a1,$a2,$a3); @d=($a1,$a2,$a3); #print @d; #print @d; print $d[0][1]; print $d[0][1];
11
2015/6/27T.B. Chen11 實例演練 -2: print "\nOpen a text file.\n"; print "\nOpen a text file.\n"; open IN, "<data1.txt";#read a text file open IN, "<data1.txt";#read a text file my @raw= ;#using @raw store data my @raw= ;#using @raw store data chomp(@raw);#skip enter keys chomp(@raw);#skip enter keys close(IN); close(IN); print "@raw \n"; print "@raw \n"; my @ref;#make 2d array my @ref;#make 2d array #'$#' = length of @raw #'$#' = length of @raw for ($i = 0 ; $i <= $#raw ; $i++) { for ($i = 0 ; $i <= $#raw ; $i++) { my @tmp = split(/\s/, $raw[$i]); my @tmp = split(/\s/, $raw[$i]); $ref[$i]=\@tmp; #each line is a refence in @ref $ref[$i]=\@tmp; #each line is a refence in @ref } } print "Totl $i lines in the document.\n"; print "Totl $i lines in the document.\n"; print $ref[0][1]; print $ref[0][1]; print "\n"; print "\n";
12
2015/6/27T.B. Chen12 實例演練 -3 print "Open a Excel CSV file.\n"; print "Open a Excel CSV file.\n"; open IN1, "<dat3.csv";#read a Excel file.csv open IN1, "<dat3.csv";#read a Excel file.csv my @raw1= ;#using @raw store data my @raw1= ;#using @raw store data chomp(@raw1);#skip enter keys chomp(@raw1);#skip enter keys close(IN1); close(IN1); my @ref1;#make 2d hash my @ref1;#make 2d hash #'$#' = length of @raw #'$#' = length of @raw $line1=@raw1[0]; $line1=@raw1[0]; print "The first row=$line1\n"; print "The first row=$line1\n"; @n=split(/,/, $line1); @n=split(/,/, $line1); $num=$#n; $num=$#n; print "Total coma = $num \n"; print "Total coma = $num \n"; for ($i = 0 ; $i <= $#raw1 ; $i++) { for ($i = 0 ; $i <= $#raw1 ; $i++) { my @tmp = split(/,/, $raw1[$i]); my @tmp = split(/,/, $raw1[$i]); print "@tmp\n"; print "@tmp\n"; $ref1[$i]=\@tmp; #each line is a refence in @ref1 $ref1[$i]=\@tmp; #each line is a refence in @ref1 } } print "Totl $i lines in the document.\n"; print "Totl $i lines in the document.\n"; print 'tmp='.@tmp."\n"; print 'tmp='.@tmp."\n"; print 'ref1[2][0]='.$ref1[2][0]."\n"; print 'ref1[2][0]='.$ref1[2][0]."\n"; print 'ref1[2][1]='.$ref1[2][1]."\n"; print 'ref1[2][1]='.$ref1[2][1]."\n"; print 'ref1[2][2]='.$ref1[2][2]."\n"; print 'ref1[2][2]='.$ref1[2][2]."\n"; print 'ref1[2][3]='.$ref1[2][3]."\n"; print 'ref1[2][3]='.$ref1[2][3]."\n"; print 'ref1[2][4]='.$ref1[2][4]."\n"; print 'ref1[2][4]='.$ref1[2][4]."\n"; print 'ref1[2][4]='.$ref1[2][5]."\n"; print 'ref1[2][4]='.$ref1[2][5]."\n";
13
2015/6/27T.B. Chen13 實例演練 -4: print "\n delete elements from array!\n"; print "\n delete elements from array!\n"; print 'Before splice: $ref1[0][0]='.$ref1[0][0]."\n"; print 'Before splice: $ref1[0][0]='.$ref1[0][0]."\n"; # using splice Array,Offset. # using splice Array,Offset. splice(@ref1,0,1); splice(@ref1,0,1); print 'After splice: $ref1[0][0]='.$ref1[0][0]."\n"; print 'After splice: $ref1[0][0]='.$ref1[0][0]."\n"; #-------Write to file------------------ #-------Write to file------------------ print "Output to a file.\n"; print "Output to a file.\n"; open(out1,">out1.txt"); open(out1,">out1.txt"); for ($i = 0 ; $i < $#raw1 ; $i++) { for ($i = 0 ; $i < $#raw1 ; $i++) { for ($j = 0 ; $j <=$num ; $j++) { for ($j = 0 ; $j <=$num ; $j++) { print out1 $ref1[$i][$j]."\t"; print out1 $ref1[$i][$j]."\t"; } print out1 "\n"; print out1 "\n"; } } close(out1); close(out1); __END__ __END__
14
2015/6/27T.B. Chen14 7. 常規表示式 : PERL 處理文字的能力特別強. 當進行文字樣式 比對、取代,常規表示式提供簡單的語法進行 愎雜的字串比對工作. PERL 處理文字的能力特別強. 當進行文字樣式 比對、取代,常規表示式提供簡單的語法進行 愎雜的字串比對工作. 例 : $str=~m/Perl/; 這是一種常規表示式. 例 : $str=~m/Perl/; 這是一種常規表示式. 運算子 : 運算子 : 符合 : m/Pattern/=m{Pattern}=m[Pattern]=m 符合 : m/Pattern/=m{Pattern}=m[Pattern]=m 取代 : s/Pattern/Replacement/ 取代 : s/Pattern/Replacement/ 轉換 : tr/Pattern/Replacement/ 只能做用在 Scalar. 轉換 : tr/Pattern/Replacement/ 只能做用在 Scalar.
15
2015/6/27T.B. Chen15 常規表示式 : 使用符合運算 $str=~m/pattern/modifier $str=~m/pattern/modifier 上式說明 : 從 $str 中依照 modifier 樣式找出 符合 pattern 的所有字串. 其中 =~ 代表 match, 而 !~ 代表 not match. 上式說明 : 從 $str 中依照 modifier 樣式找出 符合 pattern 的所有字串. 其中 =~ 代表 match, 而 !~ 代表 not match. Modifier: 符合運算的修正字元 Modifier: 符合運算的修正字元 符合運算的修正字元
16
2015/6/27T.B. Chen16 常規表示式 : 使用取代運算 $str=~s/pattern/replacement/modifier $str=~s/pattern/replacement/modifier 上式說明 : 從 $str 中依照 modifier 樣式找出 符合 pattern 的所有字串, 並用 replacement 取代. 上式說明 : 從 $str 中依照 modifier 樣式找出 符合 pattern 的所有字串, 並用 replacement 取代. Modifier: 取代運算的修正字元 Modifier: 取代運算的修正字元 取代運算的修正字元
17
2015/6/27T.B. Chen17 常規表示式 : 使用轉換運算 $str=~tr/pattern/replacement/modifier $str=~tr/pattern/replacement/modifier 上式說明 : 從 $str 中依照 modifier 樣式找出 符合 pattern 的所有字串, 並用 replacement 取代. 但只能做用在 Scalar 上. 上式說明 : 從 $str 中依照 modifier 樣式找出 符合 pattern 的所有字串, 並用 replacement 取代. 但只能做用在 Scalar 上. Modifier: 轉換運算的修正字元 Modifier: 轉換運算的修正字元 轉換運算的修正字元
18
2015/6/27T.B. Chen18 常規表示式的元素 例子 : 例子 : $num=$str=~m/^pattern|\t|\s//g; $num=$str=~m/^pattern|\t|\s//g; ($num=$str)=~m/^pattern|\t|\s//g; ($num=$str)=~m/^pattern|\t|\s//g; // : 表示分界元.( 也可以使用 {},,[ ] 當分界元.) // : 表示分界元.( 也可以使用 {},,[ ] 當分界元.) =~: 表示 match. !~ 代表 not match. =~: 表示 match. !~ 代表 not match. ^ : 表示從字串開頭比對. ^ : 表示從字串開頭比對. | : 代表 OR. | : 代表 OR. \t : 代表 TAB, \s 代表空白. \t : 代表 TAB, \s 代表空白. ($num=$str): 表示 $num=$str. ($num=$str): 表示 $num=$str. $num=$str : 表示將符合次數存於 $num 中. $num=$str : 表示將符合次數存於 $num 中.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.