お世話になります。
早速ですが、簡単なことなのかもしれませんが、
どうにも分からないので教えてください。
作業域が消えてしまうように見えるのです。
&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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
openした後、closeしないでプロ...
-
TeraPadエディターの操作方法に...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
-
perlについての質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Perlで複数の値を返す良い方法...
-
なんで?
-
Perlにfunctionってないんですか?
-
HASH(0xほげほげ)
-
CGIから複数の別プログラムを同...
-
Wコロン
-
プログラミングの上達のコツ
-
Perlで use strict して our変数
-
内部処理形式が日付型 (Date) ...
-
Pythonのプログラミングの質問...
-
split関数について・・・
-
perlのスクリプトどこが間違っ...
-
PerlでCabochaを呼び出すには(...
-
三乗根
-
ハノイの塔の問題で困っており...
-
Rubyのgets関数について
-
数値の多い順に別々の処理をす...
-
foreach 回数制限
-
CLispのloop内の挙動について
-
icmp socket error
おすすめ情報