Ich habe ein Problem, auf das ich keine Antwort finden kann.Wie kann ich Win32-Module nur integrieren, wenn ich mein Perl-Skript unter Windows ausführe?
Mit Perl muss ich ein Skript über Windows und Unix-Plattformen verwenden. Das Problem ist, dass wir unter Windows Win32-spezifische Module wie Win32::Process verwenden, und diese Module existieren nicht unter Unix.
Ich brauche eine Möglichkeit, diese Win32-Module nur unter Windows zu integrieren.
if($^O =~ /win/i)
{
use win32::process qw(CREATE_NEW_CONSOLE);
}
else
{
#unix fork
}
Das Problem liegt in der Verwendung von Anweisung für Windows. Egal was ich versuche das kompiliert nicht unter Unix.
ich dynamisches evals verwendet hat versucht, erfordert, BEGIN usw.
Gibt es für dieses Problem eine gute Lösung? Jede Hilfe wird sehr geschätzt.
Vielen Dank im Voraus,
Dan
Update:
Ein Mitarbeiter mir dies der richtige Weg, es zu tun hingewiesen.
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";
Vielen Dank für Ihre Hilfe!
Dan
Vermeiden Sie die indirekte Objektsyntax: Win32 :: Process-> import (qw (CREATE_NEW_CONSOLE)); –