私はこれらの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の先頭に行を追加すると、コンパイルが同じエラーで失敗することですが、「使用」の順序に依存しません。