亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Perl > 正文

perl中子程序中參數的兩種引用(傳遞)方式介紹

2020-10-31 15:17:43
字體:
來源:轉載
供稿:網友

下面是一個例子:

復制代碼 代碼如下:

use strict;
#這里是兩個數組
my @i =('1','2','3');
my @j =('a','b','c');

#在進行處理之前,我們把他們先打印出來,看一看他們的樣子
print "In main program before calling subroutine:i="."@i/n";
print "In main program before calling subroutine:j="."@j/n";

#然后我們通過子程序進行處理
reference_sub(@i,@j);
print "In main program after calling subroutine:i="."@i/n";
print "In main program after calling subroutine:j="."@j/n";
#下面是子程序
sub reference_sub
{
 my (@i,@j)=@_;
 print "In subroutine:i="."@i/n";
 print "in subroutine:j="."@j/n";

 #這里我們對@_的處理用pop,和shift來進行
 push(@i,'4');
 shift(@j);
}


得到的結果如下:
復制代碼 代碼如下:

F:/>perl/a.pl
In main program before calling subroutine:i=1 2 3
In main program before calling subroutine:j=a b c
In subroutine:i=1 2 3 a b c
in subroutine:j=
In main program after calling subroutine:i=1 2 3
In main program after calling subroutine:j=a b c
F:/>

在這個例子中,子程序中有兩個參數@i和@j,當我們將這兩個參數傳遞到子程序的時候,子程序將他們全部放入了內置數組@_中,然后在@_中@i和@j的不同沒有了,也就是在@_中混為一談了,無法區分。當我們想重新得到他們兩個的時候,我們發現,@i=1 2 3 a b c,而@j為空。在很多時候這顯然不是我們想要得到的結果,所以我們要用到pass by reference(在大駱駝書第六章中被翻譯為”傳入引用“)
我們僅僅把代碼做一個變動,也就是在
程序如下:
復制代碼 代碼如下:

use strict;

#這里是兩個數組
my @i =('1','2','3');
my @j =('a','b','c');

#在進行處理之前,我們把他們先打印出來,看一看他們的樣子
print "In main program before calling subroutine:i="."@i/n";
print "In main program before calling subroutine:j="."@j/n";

#然后我們通過子程序進行處理
reference_sub(/@i,/@j);#在這里我們添加了反斜線,也就是pass byreference(傳入引用,在大駱駝書中第六章翻譯)
print "In main program after calling subroutine:i="."@i/n";
print "In main program after calling subroutine:j="."@j/n";
#下面是子程序
sub reference_sub
{
 my ($i,$j)=@_;#引用也是一種特殊的數據形式,它們在@_中都被當成標量變量來儲存
 print "In subroutine:i="."@$i/n";所以這里引用它們的時候,我們在他們前面添加了兩個符號,@代表這是一個數組,$代表著是一個二次引用。
 print "in subroutine:j="."@$j/n";
    print "In subroutine:the third element is $$j[2]/n";#當引用數組中的一個元素的時候第一個$和后面的j[2]代表數組中的第三個元素,而第二個$代表的就是二次引用
 #這里我們對@_的處理用pop,和shift來進行
 push(@$i,'4');
 shift(@$j);
}


結果如下:
復制代碼 代碼如下:

F:/>perl/a.pl
In main program before calling subroutine:i=1 2 3
In main program before calling subroutine:j=a b c
In subroutine:i=1 2 3
in subroutine:j=a b c
In subroutine:the third element is c
In main program after calling subroutine:i=1 2 3 4
In main program after calling subroutine:j=b c
F:/>

我們可以觀察最后的結果,
在調用了子程序以后@i的值發生了變化:i=1 2 3 4 而j=b c。也就是說我們在子程序中對數組進行的push和shift操作在主程序中起了作用。
為什么會出現這種情況呢?
一般來說,我們在子程序中對變量進行了my聲明,也就是只會在子程序中起作用,而不會改變主程序中的值。
在這里由于引用的是真實的參數,也就是主程序中的值,而不是它的備份,所以會得到相應的改變。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲成人xxx| 国产高清视频一区三区| 情事1991在线| 在线看福利67194| 久久中文久久字幕| 日韩亚洲在线观看| 最近2019免费中文字幕视频三| 日韩av电影国产| 羞羞色国产精品| 精品一区二区电影| 国产欧美日韩视频| 亚洲性生活视频在线观看| 日韩精品在线私人| 久久久国产一区二区三区| 久久6免费高清热精品| 精品国产一区久久久| 久久综合亚洲社区| 亚洲精品一二区| 日韩黄色在线免费观看| 久久久久免费精品国产| 欧美高跟鞋交xxxxxhd| 午夜免费在线观看精品视频| 欧美在线视频免费| 久久久亚洲精品视频| 5278欧美一区二区三区| 亚洲欧美成人一区二区在线电影| 欧美激情奇米色| 亚洲欧美日韩天堂| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲色图35p| 欧美日韩在线观看视频小说| 色偷偷偷亚洲综合网另类| 亚洲欧美日韩国产精品| 欧美日韩福利在线观看| 日本国产精品视频| 久精品免费视频| 91精品国产99久久久久久| www.99久久热国产日韩欧美.com| 国产精品久久久久久久av电影| 国产精品丝袜一区二区三区| 九九久久国产精品| 性欧美暴力猛交69hd| 亚洲国产日韩欧美综合久久| 国产精品久久久久7777婷婷| 色噜噜狠狠狠综合曰曰曰| 久久99青青精品免费观看| 国产在线久久久| 日本电影亚洲天堂| 久久在线免费视频| 日韩精品视频观看| 搡老女人一区二区三区视频tv| 成人a视频在线观看| 亚洲在线视频观看| 怡红院精品视频| 欧美整片在线观看| 久久久精品美女| 欧美日韩亚洲视频| 久久亚洲私人国产精品va| 欧美一级电影在线| 精品久久久久久亚洲精品| 精品久久久久久久久中文字幕| 日韩在线中文字幕| 91久久夜色精品国产网站| 中国人与牲禽动交精品| 91精品啪aⅴ在线观看国产| 色悠悠久久88| 国产精品一区二区在线| 久久精品中文字幕电影| 成人综合国产精品| www.久久草.com| 久久天天躁狠狠躁老女人| 91精品在线播放| 97超碰蝌蚪网人人做人人爽| 久久人人爽人人爽人人片av高请| 国产成人一区三区| 久久精品久久久久| 午夜免费在线观看精品视频| 日韩久久精品成人| 欧美一级片一区| 成人av番号网| 国产精品igao视频| 久久久久中文字幕| 91国产精品视频在线| 91免费国产视频| 欧美一级片免费在线| 欧美三级欧美成人高清www| 欧美黄网免费在线观看| 一区二区中文字幕| 亚洲视频777| 91精品久久久久久综合乱菊| 国产成人精品国内自产拍免费看| 欧美激情亚洲视频| 2018中文字幕一区二区三区| 亚洲图片制服诱惑| 国产精品中文字幕在线观看| 欧美性理论片在线观看片免费| 欧美在线一级va免费观看| 精品日韩美女的视频高清| 欧美极品欧美精品欧美视频| 成人日韩av在线| 成人黄色免费在线观看| 亚洲最大成人网色| 亚洲精品日韩在线| 国产一区二区三区视频| 欧美高跟鞋交xxxxhd| 91成人在线观看国产| 国产亚洲精品久久久久动| 国产日韩中文在线| 久色乳综合思思在线视频| 午夜精品久久久久久久久久久久久| 最近2019中文字幕在线高清| 91av在线国产| 5566成人精品视频免费| 亚洲精品国产欧美| 久久久久久免费精品| 91精品国产高清久久久久久久久| 亚洲精品久久久久久下一站| 久久成人精品视频| 国产91精品不卡视频| 韩国19禁主播vip福利视频| 欧美成人中文字幕在线| 中文字幕国产日韩| 亚洲欧洲黄色网| 亚洲国产日韩欧美在线动漫| 国产福利精品av综合导导航| 日韩在线视频国产| 欧美黑人巨大xxx极品| 欧美在线性视频| 欧美视频13p| 亚洲欧美国产精品va在线观看| 国内精品久久久久| 久久久久中文字幕2018| 色老头一区二区三区| 国产精品jvid在线观看蜜臀| 超在线视频97| 欧美俄罗斯乱妇| 九九综合九九综合| 精品国产一区二区三区久久狼5月| 91高潮在线观看| 日韩电视剧在线观看免费网站| 国产精品日韩在线播放| 正在播放亚洲1区| 久久精品国产亚洲精品| 欧美色视频日本高清在线观看| 亚洲第一精品电影| 国产福利视频一区二区| 国产精品揄拍一区二区| 亚洲精品一区久久久久久| 日韩美女视频中文字幕| 97视频在线观看播放| www国产精品com| 国外成人在线直播| 久久香蕉国产线看观看网| 日韩欧美aaa| 久操成人在线视频| 日韩av手机在线看| 国产一区二区三区日韩欧美| 欧美综合在线第二页| 欧美一区二粉嫩精品国产一线天| 91av网站在线播放| 亚洲第一男人av| 久久天天躁夜夜躁狠狠躁2022| 国产精品高潮呻吟久久av野狼| 成人淫片在线看|