1

私はこれらの3つのファイルを持っています

Constants / Requests.pm

#!/usr/bin/perl

use strict;

use base 'Exporter';

use constant MR_NOACTION     =>   0;
use constant MR_START        =>   1;
use constant MR_STOP         =>   2;

our @EXPORT = (
    'MR_NOACTION',
    'MR_START',
    'MR_STOP'
);
1;

JobManDB.pm

#!/usr/bin/perl

package JobManDB;

use strict;
use warnings;

use constant WEB_DB_FILE    => "db/web.db";
use constant MASTER_DB_FILE => "db/master.db";

use Constants::Requests;

sub new
{
    print "Ahoj: " . MR_NOACTION . "\n";
    ...

Master.pm

#!/usr/bin/perl

package Master;

use strict;
use warnings;

use Time::HiRes qw( usleep );
use Data::Dumper;

use JobManDB;                   # use #1

use Constants::Requests;  # use #2

...

投稿されたプログラムは機能していますが、コンパイルにuse #1失敗use #2するとエラーが発生します。

Bareword "MR_NOACTION" not allowed while "strict subs" in use at lib/JobManDB.pm line 26.

(26行目は「new」サブルーチンの行です)。理由を知りたいのですが。ありがとうございました。

編集:別の問題は、package Requests;Requests.pmの先頭に行を追加すると、コンパイルが同じエラーで失敗することですが、「使用」の順序に依存しません。

4

1 に答える 1

3

Requests.pmファイルにパッケージ宣言がありませpackage Constants::Requests;ん。

于 2012-08-28T08:36:06.537 に答える