0

misc変数を持つモジュールがあります$verbose

use strict;
use diagnostics;
package misc;
my $verbose = 1;

mymodおよび使用するモジュールmisc:

use strict;
use diagnostics;
use misc;
package mymod;
sub mysub ($) {
  ...
  ($misc::verbose > 0) and print "verbose!\n";
}

これは、次によって使用されmyprogます。

use strict;
use diagnostics;
use misc;
use mymod;
mymod::mysub("foo");

を実行するmyprogと、次の警告が表示されます。

Use of uninitialized value $misc::verbose in numeric gt (>) at mymod.pm line ...

私は何を間違っていますか?

4

1 に答える 1

3

mymod.pm使用する必要があります:

our $verbose = 1;

それ以外の:

my $verbose = 1;

警告は、パッケージ内のパッケージ変数$misc::verboseにアクセスしようとするためですが、ちなみに宣言されていません。 $verbosemisc

このmy関数は、字句スコープの変数を作成します。この場合、our関数を使用して作成されたパッケージスコープ変数が必要です。

daximコメントに注意してください。

于 2012-08-14T17:32:57.537 に答える