重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

ブレークポイント用に以下のようなサブルーチンを作ってみました。

 sub bp {
 if(not defined $_[0]){return};
 
 open(OUT,">>$bpfile") || err('ファイルが開けません。bp');
 eval{flock(OUT,2)};
 
 my $num=@_-1;
 print OUT $_[0];
 for my $i(1..$num) {
 print OUT "\t".$_[$i];
 }
 print OUT "\n";
 
 close(OUT);
 }

ただ
 bp();
と記述すれば何もせず、本当にただのブレークポイントですが、引数に変数を持ってくれば、その位置での変数の値をファイルに記録してくれます。

ただ引数が連想配列だった場合、キーや値が表示される順番が毎回違うので使い勝手に難があります。変数の型をサブルーチン側で判別して、コードを書き分けることは出来ないでしょうか。

A 回答 (1件)

単純に連想配列を渡すだけではだめ (複数のスカラーを渡すのか配列を渡すのか連想配列を渡すのかの区別がつかない) だけど, 参照を渡すことにすればできます.


受け取った方では ref を使って「何が渡されたのか」を知る.
    • good
    • 0
この回答へのお礼

ありがとうございます。
うまく分岐できました。

お礼日時:2009/07/17 20:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!