$_
俗稱perl的老地方,當你的程序中未告知使用哪個參數或者變量時,perl就會自動使用$_中的值,比如
1
2
3
|
for (1..10){ print ; } |
這里print沒有指定參數,所以它就會使用$_,那$_里面是什么呢?每次循環$_的值都會變化,所以$_實際上就是1 .. 10這10個值,所以上面的代碼打印的結果就是12345678910
$!
當且僅當某個函數調用失敗時才會設置該變量,所以經常這樣使用這個變量
open FILE,"<d:/code/zdd.txt" or die $! ;
$/
這是perl中的行分隔符,默認是換行符,可以改變這個變量以便一次讀入整個文件,如下
1
2
3
4
5
6
7
8
|
sub test{ open FILE, "<d:/code/zdd.txt" or die $! ; my $olds = $/ ; local $/= undef ; my $slurp =<FILE> ; print $slurp , "\n" ; $/= $olds ; } |
$`
正則表達式匹配變量,代表匹配位置之前的內容
$&
正則表達式匹配變量,代表匹配的內容
$'
正則表達式匹配變量,代表匹配位置之后的內容
來看一個例子,解析xml文件,有如下xml文件,我想獲得Code節點的值
<?xml version='1.0' encoding='UTF-8'?>
<Code>200</Code>
用下面的perl代碼來解析
1
2
3
4
5
6
|
my $str = "<Code>200</Code>" ; if ( $str =~/(?<=<Code>)(\d+)(?=<\/Code>)/){ print "string before matched: $`" , "\n" ; print "matched string: $&" , "\n" ; print "string after matched: $'" , "\n" ; } |
運行結果是
string before matched: <Code>
matched string: 200
string after matched: </Code>
其中$`對應<Code>,$&對應200,$'對應</Code>
$|
控制對當前選擇的輸出文件句柄的緩沖,例子待添加。
@_
傳給子程序的參數列表,通常一個子程序是這樣獲得傳給它的參數的。
1
2
3
4
|
sub add { my ( $num1 , $num2 ) = @_ ; return $num1 + $num2 ; } |
如果子程序只有一個參數,也可以用shift來獲取,此時,shift相當于shift @_
1
2
3
4
|
sub square { my $num = shift ; # same as my $num = shift @_ return $num * $num ; } |
perl常見符號
=> 鍵值對,左鍵右值
-> 引用,相當于java中的 【對象.方法名】中的點號
:: 表示調用類的一個方法
% 散列的標志,定義一個鍵值對類型的
@ 數組的標志
$ 標量的標志
=~ 匹配的標志
!~ 不匹配的標志
$! 根據上下文返回錯誤號或者錯誤串
原文鏈接:http://www.cnblogs.com/softwaretesting/archive/2011/08/08/2130663.html