Невозможно использовать неопределенное значение в качестве ссылки ARRAY в ~/modules/Log/Syslog/Constants. pm строка 28. (F) Значение, используемое как жесткая ссылка или символическая ссылка, должно быть быть определенным значением. Это помогает совершить некоторые коварные ошибки. Полный код выглядит следующим образом:Невозможно использовать неопределенное значение в качестве ссылки ARRAY в ~/modules/Log/Syslog/Constants.pm строка 28
package Log::Syslog::Fast::Constants;
use strict;
use warnings;
use Log::Syslog::Constants();
use Carp 'croak';
require Exporter;
our @ISA = qw(Exporter);
use constant LOG_UDP => 0; # UDP
use constant LOG_TCP => 1; # TCP
use constant LOG_UNIX => 2; # UNIX socket
use constant LOG_RFC3164 => 0;
use constant LOG_RFC5424 => 1;
our @EXPORT =();
our %EXPORT_TAGS = (
protos => [qw/ LOG_TCP LOG_UDP LOG_UNIX /],
formats => [qw/ LOG_RFC3164 LOG_RFC5424 /],
);
$EXPORT_TAGS{$_} = $Log::Syslog::Constants::EXPORT_TAGS{$_}
for qw(facilities severities);
our @EXPORT_OK = @{ $EXPORT_TAGS{all} } = map {@$_} values %EXPORT_TAGS;
sub AUTOLOAD {
(my $meth = our $AUTOLOAD) =~ s/.*:://;
if (Log::Syslog::Constants->can($meth)) {
return Log::Syslog::Constants->$meth(@_);
}
croak "Undefined subroutine $AUTOLOAD";
}
1;
Это прекрасно работает для меня. Что вы делаете, чтобы получить эту ошибку? Правильно ли размещен этот файл, 'Constants.pm'? Другая мысль - видимо, существует модуль с таким же именем, 'use'd by' Log :: Syslog :: Fast'. Связано ли это с конфликтами? – zdim
Под «работает для меня» я имею в виду следующее. Я использую этот модуль (в файле 'Constants.pm', помещенного в' Log/Syslog/Fast/') в скрипте, и после' use Log :: Syslog :: Fast :: Constants qw (: severities) ' Я могу напечатать константу (как гонор) 'LOG_DEBUG' и т. Д. Помогает ли это? – zdim