Я использую следующие библиотеки Perl для Linux и Windows, как указано ниже -
Linux:
use Fcntl;
use File::FcntlLock
Windows:
use Win32::API;
use Win32API::File qw(:Func :Misc :FILE_:FILE_FLAG_ :FILE_SHARE_ :FILE_ATTRIBUTE_ :GENERIC_ )
Таким образом, на основе хоста (Linux или Windows), который я использую для запуска сценариев, я загружаю пакет -
my $linux_packages = "use Fcntl; use File::FcntlLock; use File::Copy;1;";
my $window_packages
= "use Win32::API; use Win32API::File qw(:Func :Misc :FILE_ "
. ":FILE_FLAG_ :FILE_SHARE_ :FILE_ATTRIBUTE_ :GENERIC_ );1;";
if ( $Hosttype =~ /unix/ ) {
eval "$linux_packages";
} elsif ( $Hosttype =~ /windows/ ) {
eval "$window_packages";
}
Теперь я пытаюсь использовать флаги из клиента Linux или Windows, но если я запускаю скрипт на клиенте Linux, он выдает ошибку для флагов Windows как
ОШИБКА СКРИПТА: Базовое слово "GENERIC_READ" не допускается, когда используются "строгие подпрограммы"
И если указано GENERIC_READ, оно используется как строка, а не как фактический флаг, и наоборот.
Как решить?