自己的**
sub inshash="1";
}close(infile);
#while(($key,$value)=each%ref_hash_field) }
inshash($tmp_filenm_src_2,\%hash_field_src);
perl中的是如何在函式中使用引用引數的。有時不想返回陣列或者其他形式,希望直接修改函式的引數的例項的具體的值,作為返回,就c中的傳遞引用引數一樣。
這樣在perl中是怎麼寫的呢? 查了一下文件,perl中的引用應該是通過」\「 來寫的,就像c中&操作符取位址一樣。
所以你寫
$var1= \$var2 ;
就建立了乙個名字$var1的引用,引用的是$var2; 有了引用你就可以修改原有的變數的值了,但還要通過的乙個類似c中的* 操作符的 "$"符號,表示對引用再取值,所以當
$$var1="11111" ;
這樣的語句的到執行的時候,$var2的值就被修改了。不過注意的是如果你使用的是陣列的引用,像這樣:
$var1= \@var2 ;
那麼你等會要獲取$var1指向的陣列,應該寫 @$var1 這樣了。
知道了perl的引用語法,所以想傳引用的話,就可以像下面的myfunc1 那樣寫就行了。
但我們又知道在子過程中@_ 這個陣列其實也是指向具體的引數的例項的,不是引數的拷貝。
所以你在函式裡面寫$var1 = \$_[0];的時候其實也是獲得了引數的引用。所以就可以寫出
myfunc2那樣的函式,注意傳給myfunc2的引數沒有加上\ 來表示引用了。不過竟然@_ 就可以直接
返問引數的原有例項了,那麼我們直接給他賦值不就行了嗎,我們還需要引用幹什麼呢,就像myfunc3做的那樣。它直接修改了引數的第乙個引數的值,也達到了c中傳引用的效果啦。
perl這個東西真是難用,語法奇怪的很!!!
--------------------------------
my $var1 ='0000000';
sub myfunc1
sub myfunc2
sub myfunc3
print "var1 = $var1\n";
myfunc1(\$var1);
print "var1 = $var1\n";
myfunc2($var1);
print "var1 = $var1\n";
myfunc3($var1);
print "var1 = $var1\n";
------------------------------
執行後輸出:
var1 = 0000000
var1 = 1111111
var1 = 2222222
var1 = 33333
PHP 迴圈 傳引用 用法及問題
不銷毀變數 echo 不銷毀變數 n arr 1,2,3 dump arr 記得測試 foreach 傳引用 foreach arr as val dump arr val 5 dump arr 執行結果如下 可以看出最後,最後給變數賦值,賦值影響了陣列最後資料 正確用法應該是 銷毀變數 echo ...
c 的引用用法
一 引用簡介 引用就是某一變數 目標 的乙個別名,對引用的操作與對變數的直接操作完全一樣。引用的宣告方法 類別識別符號 引用名 目標變數名 例1 int a int ra a 定義引用ra,它是變數a的引用,即別名。說明 二 引用應用 引用作為引數 void swap int p1,int p2 函...
perl陣列硬引用 perl中的引用
為什麼使用引用?在perl4中,hash表中的value欄位只能是scalar,而不能是list,這對於有些情況是很不方便的,比如有下面的資料 chicago,usa frankfurt,germany berlin,germany washington,usa helsinki,finland n...