perlスクリプトにおいて、サブルーチンの引数に複数の配列を渡す方法について説明します。
サブルーチンの引数に複数の配列を渡すには、引数に配列そのものを渡すのではなく、引数の参照を渡すようにします。
sub printRefArrays { my($aRefArray1,$aRefArray2)=@_; for(my($tCount1)=0;$tCount1<=($#$aRefArray1);$tCount1++) { print $$aRefArray1[$tCount1]; } print "\n"; for(my($tCount1)=0;$tCount1<=($#$aRefArray2);$tCount1++) { print $$aRefArray2[$tCount1]; } print "\n"; } @tTestArray1=('1','2','3','4','5'); @tTestArray2=('a','b','c','d','e'); &printRefArrays(\@tTestArray1,\@tTestArray2);
このプログラムをコンパイル/実行した結果は、下記の通りです。
12345 abcde
参照渡しは連想配列でも可能です。
sub printRefArrays { my($aRefArray1,$aRefArray2)=@_; foreach(sort keys %$aRefArray1) { $tKey=$_; $tValue=$$aRefArray1{$tKey}; print $tKey.' -> '.$tValue."\n"; } print "\n"; foreach(sort keys %$aRefArray2) { $tKey=$_; $tValue=$$aRefArray2{$tKey}; print $tKey.' -> '.$tValue."\n"; } print "\n"; } %tTestArray1=('name'=>'John','age'=>'31','sex'=>'male'); %tTestArray2=('hour'=>'22','minute'=>'38','second'=>'18'); &printRefArrays(\%tTestArray1,\%tTestArray2);
このプログラムをコンパイル/実行した結果は、下記の通りです。
age -> 31 name -> John sex -> male hour -> 22 minute -> 38 second -> 18
これらの配列は参照渡しなので、サブルーチンの中でその中身を変更すると、サブルーチンを呼び出した側の配列の内容も書き換わってしまう点に注意してください。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まさにこれだ 2 (40%) |
参考になった 2 (40%) |
これじゃない 1 (20%) |
表示できるメッセージはありません。