- ベストアンサー
変数の再利用
あるサブ関数の中で計算した変数を別のサブ関数の中で利用したいのですが、どうやればいいのでしょうか? とある理由から、プリントするサブ関数が計算したサブ関数より先に実行されます。 my $a; sub header{ print "$a"; } sub second { $a = $b+$c+$d; } 自分でも単純そうに思えるのですが、仕事で行き詰っているせいか、方法が生み出せないので、お助け下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
がると申します。とりあえず直線的に。 > あるサブ関数の中で計算した変数を別のサブ関数の中で利用したい との内容なので。 sub とあるサブ関数 { 計算した変数 =計算; return 計算した変数; } sub 別のサブ関数 { my(とあるサブ関数で計算した変数) = @_; } # 基本はこっち $ret = とあるサブ関数(); 別のサブ関数($ret); # こっちでも動く 別のサブ関数( とあるサブ関数() ); どうでしょうか?
その他の回答 (2)
- moon_night
- ベストアンサー率32% (598/1831)
回答No.3
my $a; を削除する。
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.1
>プリントするサブ関数が計算したサブ関数より先に実行されます。 &second が実行される前に、&header が呼び出されるという意味であれば、どう考えてもムリです。 &header で$a を使う前までに&second を実行しておかなければなりません。 とある理由を説明されるといいかもしれません。 現状では、この"方法"は、変えないと仕方ありませんが、 どういうことをやっているかわからないと、 変えるアドバイスもできないし、変えて良いのかもわかりません。
お礼
皆様、大変ありがとうございます。 結局、無理な仕様変更だということになり、やらなくて済むことになりました。 ですが、こういう方法があったとは知らなかったので、実験していませんが、大変参考になりました。 ありがとうございます。