3

以下の例が失敗する理由がわかりません(テスト2)。* bbグロブから変数bbにアクセスできないのはなぜですか?

use Test::More tests => 4;

$aa = 1;
my $bb = 2;   # HERE!
local $cc = 3;
our $dd = 4;

is(${*aa}, 1, "$ \*aa should be 1");
is(${*bb}, 2, "$ \*bb (my) should be 2");
is(${*cc}, 3, "$ \*cc (local) should be 3");
is(${*dd}, 4, "$ \*dd (our) should be 4");

出力は

1..4
ok 1 - *aa should be 1
#   Failed test '*bb (my) should be 2'
#   at untitled line 10.
#          got: undef
#     expected: '2'
# Looks like you failed 1 test of 4.
not ok 2 - *bb (my) should be 2
ok 3 - *cc (local) should be 3
ok 4 - *dd (our) should be 4

Perl5.16.0の下で

ありがとう

4

1 に答える 1

7

字句変数(で作成されたもの)はシンボルテーブルの一部ではないため、グロブmyで到達することはできません。シンボルテーブルとグロブも参照してください。

于 2013-02-16T14:12:26.477 に答える