J'ai un problème auquel je n'arrive pas à trouver de réponse.Comment puis-je inclure des modules Win32 uniquement lorsque j'utilise mon script Perl sous Windows?
Avec Perl, j'ai besoin d'utiliser un script sur Windows et les plateformes Unix. Le problème est que sous Windows, nous utilisons des modules Win32-spécifiques tels que Win32::Process, et ces modules n'existent pas sous Unix.
J'ai besoin d'un moyen d'inclure ces modules Win32 uniquement sur Windows.
if($^O =~ /win/i)
{
use win32::process qw(CREATE_NEW_CONSOLE);
}
else
{
#unix fork
}
Le problème réside dans cette instruction d'utilisation pour Windows. Peu importe ce que j'essaie cela ne compile pas sur unix.
J'ai essayé d'utiliser evals dynamique, nécessite, BEGIN, etc.
est-il une bonne solution à ce problème? Toute aide est la bienvenue.
Merci à l'avance,
Dan
Mise à jour:
Un collègue de travail m'a fait remarquer c'est la bonne façon de le faire.
require Win32;
require Win32::Process;
my $flag = Win32::Process::CREATE_NEW_CONSOLE();
Win32::Process::Create($process,
$program,
$cmd,
0,
$flag, ".") || die ErrorReport();
print "Child started, pid = " . getPID() . "\n";
Merci à tous pour votre aide!
Dan
Évitez la syntaxe d'objet indirect: Win32 :: Process-> import (qw (CREATE_NEW_CONSOLE)); –