Perl中的特殊符號介紹
$_
俗稱perl的老地方,當(dāng)你的程序中未告知使用哪個參數(shù)或者變量時,perl就會自動使用$_中的值,比如
for(1..10){
print ;
}
這里print沒有指定參數(shù),所以它就會使用$_,那$_里面是什么呢?每次循環(huán)$_的值都會變化,所以$_實(shí)際上就是1 .. 10這10個值,所以上面的代碼打印的結(jié)果就是12345678910
$!
當(dāng)且僅當(dāng)某個函數(shù)調(diào)用失敗時才會設(shè)置該變量,所以經(jīng)常這樣使用這個變量
open FILE,"<d:/code/zdd.txt" or die $! ;
$/
這是perl中的行分隔符,默認(rèn)是換行符,可以改變這個變量以便一次讀入整個文件,如下
sub test{
open FILE,"<d:/code/zdd.txt" or die $! ;
my$olds= $/ ;
local $/=undef ;
my$slurp=<FILE> ;
print$slurp,"\n" ;
$/=$olds ;
}
$`
正則表達(dá)式匹配變量,代表匹配位置之前的內(nèi)容
$&
正則表達(dá)式匹配變量,代表匹配的內(nèi)容
$'
正則表達(dá)式匹配變量,代表匹配位置之后的內(nèi)容
來看一個例子,解析xml文件,有如下xml文件,我想獲得Code節(jié)點(diǎn)的值
<?xml version='1.0' encoding='UTF-8'?>
<Code>200</Code>
用下面的perl代碼來解析
my$str="<Code>200</Code>" ;
if($str=~/(?<=<Code>)(\d+)(?=<\/Code>)/){
print"string before matched: $`","\n" ;
print"matched string: $&","\n" ;
print"string after matched: $'","\n" ;
}
運(yùn)行結(jié)果是
string before matched: <Code>
matched string: 200
string after matched: </Code>
其中$`對應(yīng)<Code>,$&對應(yīng)200,$'對應(yīng)</Code>
$|
控制對當(dāng)前選擇的輸出文件句柄的緩沖,例子待添加。
@_
傳給子程序的參數(shù)列表,通常一個子程序是這樣獲得傳給它的參數(shù)的。
sub add {
my ($num1, $num2) = @_;
return $num1 + $num2;
}
如果子程序只有一個參數(shù),也可以用shift來獲取,此時,shift相當(dāng)于shift @_
sub square {
my $num = shift ; # same as my $num = shift @_
return $num * $num;
}
perl常見符號
=> 鍵值對,左鍵右值
-> 引用,相當(dāng)于java中的 【對象.方法名】中的點(diǎn)號
:: 表示調(diào)用類的一個方法
% 散列的標(biāo)志,定義一個鍵值對類型的
@ 數(shù)組的標(biāo)志
$ 標(biāo)量的標(biāo)志
=~ 匹配的標(biāo)志
!~ 不匹配的標(biāo)志
$! 根據(jù)上下文返回錯誤號或者錯誤串
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信