リストを渡すときに名前を使って順序を意識しないようにする
back
サブルーチンへ引数を渡す場合、通常はリストで渡すことになるので、
呼び出し側では、引数 0 にデータA、引数 1 にデータB ... というような
感じで、順序を把握しておく必要がある
&function($filename, $dirname, $from, $to);
sub function {
my ($file, $dir, $from, $to) = @_;
:
そこで、ハッシュを使って、key=value という形でサブルーチンへ値を
渡せばよい
&function('filename'=>$filename, 'dirname'=>$dirname,
'from'=>$from, 'to'=>$to);
sub function {
my %arg = @_;
$arg{'filename'} = "デフォルト値" unless exists $arg{'filename'};
$arg{'dirname'} = "デフォルト値" unless exists $arg{'dirname'};
$arg{'from'} = "デフォルト値" unless exists $arg{'from'};
$arg{'to'} = "デフォルト値" unless exists $arg{'to'};
:
ちなみに、このデフォルト値をセットする処理は
sub function {
my %arg = ('filename' => "デフォルト値",
'dirname' => "デフォルト値",
'from' => "デフォルト値",
'to' => "デフォルト値",
@_);
とすれば、引数で渡す @_ が(キーが存在すれば)デフォルト値を上書きする。
back