燈明日記 このページをアンテナに追加 RSSフィード

ごあいさつ

燈明日記へようこそ!!

燈明日記の主なテーマは、以下の通りです。

そして、燈明日記へ来られたのも『私』と『あなた』の何かのご縁です。なので、どうぞごゆっくりご覧下さい!


2008/6/10(火)

[] Perlでforeach文をかますとレキシカルスコープが変

以下のように $wk1 と $wk2 は同じレキシカルスコープなのに、$wk2 だけがサブルーチンxxxで『Use of uninitialized value』エラーになるのです。

どうも foreach文 をかますと $wk2 のレキシカルスコープが切れてしまう感じなのです。

これ、バグなのかな、それとも仕様かな・・・。

ちなみに、レキシカル「my $wk2;」をグローバル「our $wk2」にすれば、エラーになりません。

use strict;
use warnings;

my $wk1 = "AAA";
my $wk2;
my @result = ("aaa");

foreach $wk2 (@result) {
    &xxx();
}

sub xxx {
    print $wk1, ' In $wk1', "\n";
    print $wk2, ' In $wk2', "\n";
}

実行結果

C:\Documents and Settings\test>test01.pl
AAA In $wk1
Use of uninitialized value in print at C:\Documents and Settings\test\test01.pl
 line 14.
 In $wk2

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/chaichanPaPa/20080610/1213104888