日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
解析Perl引用中Perl直接應(yīng)用用法

本文和大家重點(diǎn)討論一下Perl引用中Perl直接引用的概念,Perl中的Perl引用分為Perl直接引用和符號Perl引用,本文只針對Perl直接引用做一下介紹,希望本文介紹對你有所幫助。

創(chuàng)新互聯(lián)建站是一家專注于成都網(wǎng)站制作、做網(wǎng)站與策劃設(shè)計,桑日網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:桑日等地區(qū)。桑日做網(wǎng)站價格咨詢:13518219792

Perl直接引用

Perl中的Perl引用分為Perl直接引用和符號Perl引用,本文只針對Perl直接引用,至于符號Perl引用在以后的文章中會給出解釋。

1、一般的標(biāo)量Perl引用,如:

 
 
 
  1. subadd{  
  2. my($a,$b)=@_;  
  3. $$a++;  
  4. $$b++;  
  5. }  
  6. $a=1;  
  7. $b=2;  
  8. add(\$a,\$b);  
  9. print"$a,$b\n";  

輸出:2,3。
說明:取變量的Perl引用可以用“\”符號。解Perl引用用“$”符號。

2、數(shù)組的Perl引用

數(shù)組的Perl引用和標(biāo)量的Perl引用一樣,在數(shù)組名前面加“\”,只是在解Perl引用的時候,使用@符號。如:
@abc=(1,2,3);
$ref=\@abc;
print“@$ref\n”;輸出1,2,3。
print“@$ref[0]\n”;輸出1。
對數(shù)組的Perl引用主要用在解決向函數(shù)傳遞若干個數(shù)組的問題。在Perl中,如果向函數(shù)傳遞若干個數(shù)組,則他們會將這些數(shù)組展開到@_數(shù)組中,并不能通過@_這個數(shù)組來區(qū)分傳遞過來的參數(shù)。
如:

 
 
 
  1. subadd{  
  2. my(@ref1,@ref2)=@_;  
  3. print(“ref1:@ref1\n”);  
  4. print(“ref2:@ref2\n”);  
  5. }  
  6.  
  7. @a=(1,2,3);  
  8. @b=(1,2,3);  
  9. @ret=add(@a,@b);  
  10.  

實(shí)際輸出的是:ref1:123123

ref2:
可以看到,在子函數(shù)add中,并沒有區(qū)分傳遞過來的兩個參數(shù)。那么如何向函數(shù)傳遞多個數(shù)組或哈希表呢?
解決的辦法是使用數(shù)組Perl引用。如下這個例子說明了如何實(shí)現(xiàn):

 
 
 
  1. subadd{  
  2. my@result;  
  3. my($ref1,$ref2)=@_;  
  4. while(@$ref1&&@$ref2){  
  5. unshift@result,pop(@{$ref1})+pop(@{$ref2});  
  6. }  
  7. return@result;  
  8. }  
  9.  
  10. @a=(1,2,3);  
  11. @b=(1,2,3);  
  12. @ret=add(\@a,\@b);  
  13. print"@ret\n";  
  14.  

輸出:246          #p#

3、對哈希表的Perl引用

和數(shù)組類似,但是當(dāng)解Perl引用時要使用$符號,如:
%hash=(abc=>123,def=>456);
$ref=\%hash;
print"%$ref\n";輸出:%HASH(0x83179b4)
print"$$ref{abc}\n";輸出:123

4、表的Perl引用

創(chuàng)建表的Perl引用將會把表中的***一個值作為產(chǎn)生的標(biāo)量:
$reflist=\($a,$b,$c);
print$$reflist."\n";#輸出$c的值。
$reflist=\(1,2...30,40);
print$$reflist."\n"#輸出40

5、創(chuàng)建匿名數(shù)組的Perl引用

$arrayreference=[1,2,3];
print$$arrayreference[0];#輸出1
print$arrayreference->[0];#輸出1可以用箭頭解Perl引用

當(dāng)用pop從數(shù)組中取值時,數(shù)組的***個元素會被彈出,但是如果用pop用于匿名數(shù)組時,可以實(shí)現(xiàn)取值而不影響原有數(shù)組,如:
@a=(1,2,3);
$s=pop@{[@a]};#perl作為快來計算@{},而快在計算時將創(chuàng)建對匿名數(shù)組的Perl引用。
print“@a\n”;#輸出123

當(dāng)反Perl引用數(shù)組Perl引用時,該結(jié)果將插入到字符串中,如:想實(shí)現(xiàn)輸出uc函數(shù)的返回結(jié)果:
print"uc(abc)\n";#輸出uc(abc),并不能將abc轉(zhuǎn)換成大寫
print"@{[uc(abc)]}\n"#輸出ABC,通過數(shù)組Perl引用實(shí)現(xiàn)大寫轉(zhuǎn)換。
可以通過$#$的方式取匿名數(shù)組的長度:
$a=[1,2,3,4];
print"$#$a\n";#輸出3,(***一個元素的下標(biāo))

6、創(chuàng)建匿名哈希表的Perl引用

如:
$hashreference={Name=>Sylvster,Gender=>male};
print$hashreference->{"Name"};#輸出Sylvester,等價于:$$hashreference{Name};
如果需要用each遍歷哈希表,則:
while(($key,$value)=each(%$hashreference)){}

7、用匿名哈希表模仿用戶自定義數(shù)據(jù)類型

subPoint{
($x,$y)=@_;
return{
x=>$x,
y=>$y
};
}
當(dāng)使用Point類型時,可以這樣做:
$point=Point(10,20);
print"x:$point->{x},y:$point->{y}\n";

8、在perl中創(chuàng)建***范圍閉包

例如:

 
 
 
  1. subPoint{  
  2. my$string1=shift;  
  3. returnsub{  
  4. my$string2=shift;  
  5. print("$string1,$string2\n");  
  6. };  
  7. }  
  8. $point=Point("Hello");  
  9. &$point("World");  
  10. &$point("guys");  

Point函數(shù)返回一個對匿名子函數(shù)的Perl引用,變量string1被***的保存在了函數(shù)中,每次調(diào)用&$point,string1的值沒有改變,都是“Hello”。

 【編輯推薦】

  1. Perl if語句用法實(shí)例解析
  2. Perl文件句柄概念詳解
  3. Perl哈希表用法解析
  4. Perl模式匹配經(jīng)驗總結(jié)
  5. 技術(shù)分享 利用Perl哈希表建立鍵-值數(shù)據(jù)映射

新聞標(biāo)題:解析Perl引用中Perl直接應(yīng)用用法
文章轉(zhuǎn)載:http://www.5511xx.com/article/cddsjjd.html