1 如果是
只有乙個引數要傳,且是hash,最直接想到的辦法就是像傳其他型別引數一樣直接傳,
如: subfuntion(%hash1);
2 如果有
多於乙個引數要傳,這裡假設只有乙個引數的型別是hash的,並把hash放到最前面,
如: subfuntion(%hash1, $var2);
這樣做結果是錯誤的,結果是子函式把第2個引數$var2合併到第乙個hash上面去,
不是你希望得到的
若把hash放在最後面的位置上,就可以了,**如下:
&subfuntion($var, %hash);
sub subfuntion()
如果這樣做,你的程式會花費太大的代價,下面接著的是 引用的方法,這樣不會限制你有幾個hash型別的引數,也不限制引數的位置:
#! c:/perl/bin/perl.exe
use strict;
use warnings;
my%hash2 =('7'=>'trojan','8'=>'worm','9'=>'hack','6'=>'harm');
my $str =&strctlselect(\%hash2,"ixigua","8","disabled",);
#「\%」是必須的
$str;
sub strctlselect()
/n";
#「$」及「->」是必須的
}else /n";
}
}
$str .= "";
return
$str;
}
產生的結果如下:
harm
trojan
worm
hack
perl基礎 傳遞hash型別引數
1 如果是 只有乙個引數要傳,且是hash,最直接想到的辦法就是像傳其他型別引數一樣直接傳,如 subfuntion hash1 2 如果有 多於乙個引數要傳,這裡假設只有乙個引數的型別是hash的,並把hash放到最前面,如 subfuntion hash1,var2 這樣做結果是錯誤的,結果是子...
方法引數傳遞
對於基本資料型別的引數,形式引數的改變,不影響實際引數的值 public class argsdemo01 public static void change int number 對於引用型別的引數,形式引數的改變,影響實際引數的值 public class argsdemo02 system.o...
perl子例程引數傳遞方式初探
perl裡,子例程採用可變長引數列表,因此引數的個數不再限制,體現出動態語言的優點。由於傳遞的是引用,所以可以在sub裡改變它的值。samle01.pl usr bin perl sub sub routine my par1 abcde my par2 2 print main par1 par1...