成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Perl直接l引用用法解析

開發 架構
Perl引用的概念你是否了解,這里和大家分享一下,Perl引用分為直接引用和符號引用,本文只針對直接引用,至于符號引用在以后的文章中會給出解釋。

本文和大家重點討論一下Perl直接Perl引用,PerlPerl引用分為直接引用和符號引用,每種Perl引用都有各自的特點和作用,這里向大家簡單介紹一下Perl直接應用的概念,希望對大家學習有所幫助。

Perl直接l引用

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

1、一般的標量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、數組的Perl引用

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

  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.  

實際輸出的是:ref1:123123
ref2:
可以看到,在子函數add中,并沒有區分傳遞過來的兩個參數。那么如何向函數傳遞多個數組或哈希表呢?
解決的辦法是使用數組Perl引用。如下這個例子說明了如何實現:
 

  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

3、對哈希表的Perl引用

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

4、表的Perl引用

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

5、創建匿名數組的Perl引用 

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

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

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

6、創建匿名哈希表的Perl引用

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

7、用匿名哈希表模仿用戶自定義數據類型

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

8、在perl中創建***范圍閉包

例如: 

  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函數返回一個對匿名子函數的Perl引用,變量string1被***的保存在了函數中,每次調用&$point,string1的值沒有改變,都是“Hello”。

【編輯推薦】

  1. 經驗總結 Perl的安裝配置步驟
  2. Perl foreach控制結構中的控制變量
  3. Perl面向對象編程中方法的調用
  4. 揭秘Perl變量中Perl純變量用法
  5. Perl基礎 Perl復雜數據結構

 

責任編輯:佚名 來源: csdn.net
相關推薦

2010-07-20 13:53:44

Perl引用

2010-07-16 13:45:41

Perl引用

2010-07-21 13:59:59

Perl引用

2010-07-16 16:40:48

Perl引用

2010-07-13 13:49:43

Perl foreac

2010-07-16 13:10:36

Perl哈希表

2010-07-14 15:32:21

Perl轉義字符

2010-07-15 10:22:23

Perl控制結構

2010-07-16 16:56:01

Perl構造函數

2010-07-16 08:47:53

Perl if語句

2010-07-20 09:45:04

Perl繼承

2010-07-19 14:13:41

Perl函數

2010-07-20 15:02:20

Perl數組

2010-07-13 09:23:00

Perl變量

2010-07-15 10:47:22

Perl命令行

2010-07-15 15:54:10

Perl守護進程

2010-07-14 12:39:30

Prel字符串

2010-07-26 15:17:51

Perl解析XML文件

2010-07-19 14:37:01

Perl進程啟動函數

2010-07-19 14:20:57

Perl函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品日韩欧美 | 黄在线免费观看 | 日韩精品成人一区二区三区视频 | 亚洲视频在线一区 | 亚洲精品国产综合区久久久久久久 | 成年人的视频免费观看 | 免费观看一级毛片 | 91在线视频观看免费 | 国产一级视频免费播放 | 黄色毛片在线播放 | 精品福利一区 | 一区二区三区视频在线观看 | 国产成人免费 | 综合九九| 国产日韩欧美 | 激情欧美一区二区三区 | 97超碰免费| 狠狠干狠狠插 | 亚洲精品美女在线观看 | 四虎影院在线播放 | 日本视频在线 | 精品国产精品国产偷麻豆 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 视频三区 | 欧美一区二区三区精品免费 | 免费骚视频 | 欧美中文一区 | 永久精品 | 91精品综合久久久久久五月天 | 日韩中文字幕在线视频观看 | 99视频在线看 | 一级黄片一级毛片 | 成人在线免费看 | jlzzxxxx18hd护士| 欧美日韩久 | 久久久久国产一区二区三区 | av黄色在线观看 | 性视频网 | 日日夜夜天天 | 日韩免费一区二区 | 操操日 |