Perl中的直接引用

2021-06-15 20:08:16 字數 2359 閱讀 9500

perl 中的直接引用

1、 一般的標量引用,如:

sub add

$a=1;

$b=2;

add(/$a,/$b);

print "$a,$b/n";

輸出:2,3。

說明: 取變數的引用可以用「/」符號。解引用用「$」符號。 2、

陣列的引用

陣列的引用和標量的引用一樣,在陣列名前面加「/」,只是在解引用的時候,使用@符號。如:

@abc = (1,2,3);

$ref = /@abc;

print 「@$ref/n」; 輸出 1,2,3。

print 「@$ref[0]/n」; 輸出 1。

對陣列的引用主要用在解決向函式傳遞若干個陣列的問題。在perl中,如果向函式傳遞若干個陣列,則他們會將這些陣列展開到@_陣列中,並不能通過@_這個陣列來區分傳遞過來的引數。 如:

sub add

@a=(1,2,3);

@b=(1,2,3);

@ret = add(@a,@b);

實際輸出的是: ref1:1 2 3 1 2 3

ref2:

可以看到,在子函式add中,並沒有區分傳遞過來的兩個引數。那麼如何向函式傳遞多個陣列或雜湊表呢?

解決的辦法是使用陣列引用。如下這個例子說明了如何實現:

sub add)+pop(@);

}return @result;

}@a=(1,2,3);

@b=(1,2,3);

@ret = add(/@a,/@b);

print "@ret/n";

輸出:2 4 6

3、對雜湊表的引用

和陣列類似,但是當解引用時要使用$符號,如:

%hash = ( abc => 123, def => 456 );

$ref = /%hash;

print "%$ref/n";

輸出:%hash(0x83179b4)

print "$$ref/n";

輸出: 123

4、 表的引用

建立表的引用將會把表中的最後乙個值作為產生的標量:

$reflist = /($a,$b,$c);

print $$reflist."/n";

#輸出$c的值。

$reflist = /(1,2...30,40); 

print $$reflist."/n"

#輸出40

5、 建立匿名陣列的引用

$arrayreference = [1,2,3];

print $$arrayreference[0];

#輸出1

print $arrayreference->[0];

#輸出1

可以用箭頭解引用

當用pop從陣列中取值時,陣列的第乙個元素會被彈出,但是如果用pop用於匿名陣列時,可以實現取值而不影響原有陣列,如:

@a=(1,2,3);

$s = pop @;

#perl作為快來計算@{},而快在計算時將建立對匿名陣列的引用。

print 「@a/n」;

#輸出 1 2 3

當反引用陣列引用時,該結果將插入到字串中,如:想實現輸出uc函式的返回結果:

print "uc(abc)/n";

#輸出 uc(abc), 並不能將abc轉換成大寫

print "@/n" #輸出 abc, 通過陣列引用實現大寫轉換。

可以通過$#$的方式取匿名陣列的長度:

$a = [1,2,3,4];

print "$#$a/n";#輸出3,(最後乙個元素的下標)

6、 建立匿名雜湊表的引用 如:

$hashreference = ;

print $hashreference->; #輸出 sylvester,等價於:$$hashreference;

如果需要用each遍歷雜湊表,則:

while( ($key, $value) = each(%$hashreference)){}

7、 用匿名雜湊表模仿使用者自定義資料型別

sub point;}

當使用point型別時,可以這樣做:

$point=point(10,20);

print "x:$point->,y:$point->/n";

8、 在perl中建立永久範圍閉包

例如:sub point;

}$point=point("hello");

&$point("world");

&$point("guys");

point函式返回乙個對匿名子函式的引用,變數string1被永久的儲存在了函式中,每次呼叫&$point,string1的值沒有改變,都是「hello」。

直接引用vee validate校驗外掛程式

直接在頁面引用vee validate 官方api 注 vee validate支援物件表示方法,支援動態取消校驗 v validate class name phone type text placeholder phone js使用方式,指定語言 修改預設提示,新增自定義驗證 veevalida...

perl陣列硬引用 perl中的引用

為什麼使用引用?在perl4中,hash表中的value欄位只能是scalar,而不能是list,這對於有些情況是很不方便的,比如有下面的資料 chicago,usa frankfurt,germany berlin,germany washington,usa helsinki,finland n...

perl 中的引用

perl 語言中的引用共分為兩類 宣告引用時只需要在物件的前面加上反斜槓 第一列是陣列的引用 示例 my array 1,2,3 my array ref array 第二種是雜湊的引用 示例 my hash 1,2,3,4 my hash ref hash 通過引用去訪問對應的值,通過 操作符 陣...