お世話になります。
早速ですが、簡単なことなのかもしれませんが、
どうにも分からないので教えてください。
作業域が消えてしまうように見えるのです。
&rtna;
&rtnb;
sub rtna {
------
}
sub rtnb {
------
}
上記のようなロジックがありまして、
rtnaで作成した作業域 $wk1を rtnbで参照すると無くなっているのです。
(具体的に20081231の様な日付です)
$wk1は明示的に確保などしておらず、直接rtnaで作成しています。
このような考えは駄目なのでしょうか。
(rtnbでは参照できないのでしょうか)
調べた方法
rtnaの中でprintしてみたところ、ちゃんと20081231と表示されます。
rtnbでprintすると何も表示されません。
どのようにトレースしたら宜しいでしょうか。
ご指摘を宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
> $wk1は明示的に確保などしておらず、直接rtnaで作成しています。
この 1行の意味が致命的に重大です。
可能性1 ============================================
rtna 内で
my $wk1
とか
local $wk1
とか書いていれば、 rtnbからは見えません。
可能性2 ============================================
そうで無ければ、 両 rtn は、同じソースの同じ package 内ですか?
可能性3 ============================================
rtnb から$wk1が見えるはず状況であっても、rtnb内で my や local で $wk1 を定義すれば、やはり見えなくなります。
可能性4 ============================================
$wk1 がリファレンスの場合や $wk1 を参照するリファレンスがあると、あなた自身が意図せずに内容を書き換えるケースもあります。
上記いずれもハズれの場合や理解できない場合は、同じ問題が発生するできるだけ短い完全なコードを手間をかけて作って貼り付けてください。
# 完全とは、それだけで実行できる『Perlのソースとして完結したもの』です。
# できるだけ短いとは、せいぜい2~30行で。
細かく有り難うございました。
まさに可能性1のlocalを使っていました。
$wk8 = $wk1と移してやったら問題なく参照できました。
これまでにもlocalを使っていましたが、
今回のような経験は初めてです。
これまではlocalで作った作業域を外のsubで使うということが無かった
ということだったのですね。
お世話になりました。
No.1
- 回答日時:
悪いけど, 「これでわかってくれ」という方が無理. $wk1 がどこでどのように参照されているかわからないので, 答えようがありません. 少なくとも $wk1 が出てくる行はすべて出すくらいのつもりで書いてください.
特に「$wk1は明示的に確保などしておらず、直接rtnaで作成しています。」と書いてあってもどのように「作成している」のかはあなた以外のだれにも理解できません. 「どのように作成しているのか」は確実に書いてください.
もちろんいくつか推測はできて, 例えば
・実は rtnb→rtna の順に実行されていた
・rtna と rtnb でパッケージが違う
・rtna で my を使って $wk1 を使っていた
とか考えられるけど, こうやって他人に推測させるような質問は大体良くないと思ってください.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください 1 2022/03/27 12:02
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/03/28 14:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Word(ワード) Wordの目次作成についてです。 卒業論文で目次を作ることになりました。 本文は「見出し」の機能を使 1 2023/01/17 11:26
- Excel(エクセル) エクセルで対象日に該当するデータがある場合に別表へ全対象者を表示させたい。 3 2023/07/12 09:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/09 12:17
- Visual Basic(VBA) エクセルで、1つのセルで上書き足し算して セルの範囲を指定できますか? パソコン初心者です。 お時間 3 2023/07/05 06:13
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで自分自身の関数名を知る...
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
Application.ScreenUpdating = ...
-
VB6で、長い時間かかる処理...
-
文字の横にプルダウンを表示さ...
-
pythonの*
-
メモリをアドレスを直接指定し...
-
「型が一致しません」のエラー...
-
セレクトボックスのselected属...
-
<SELECT>タグの折り返し
-
テーブル内でドロップダウンメ...
-
回数を指定しないで空白行まで...
-
ACCESS テキストボックスを隙...
-
【至急!!!】python言語で本を見...
-
内部処理中にNow Loadingみたい...
-
VBAでPDFのコピーとリネームを...
-
セレクトメニューで2つの項目...
-
実行時エラー 3020の対策
-
処理終了後、他のページへジャ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CLispのloop内の挙動について
-
Perlで自分自身の関数名を知る...
-
Net::Telnetでタイムアウト時間...
-
print <<"_HTML_"の中でサブル...
-
Rubyのgets関数について
-
10進数→2進数
-
CGI初心者です
-
Perlで複数の値を返す良い方法...
-
作業域が消える(ように見える)
-
検索機能の作成で困っています
-
Pythonのマルチプロセスでの並...
-
foreach 回数制限
-
ハノイの塔の問題で困っており...
-
Wコロン
-
シェルでawkを使い行数を取り出...
-
LISPで連想配列の操作?
-
PERLの「!=」と「=~」 or...
-
PerlでCabochaを呼び出すには(...
-
HASH(0xほげほげ)
-
Perlですが、redoの処理がいま...
おすすめ情報