:) Sieht gut aus, danke @Esskar.
hier die Methode aus dem Modul:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
sub ProcessStart
{ my ($self, %arg) = @_;
$arg{perl} or croak qq~Argument "perl" ist nicht angegeben.~;
$arg{script} or croak qq~Argument "script" ist nicht angegeben.~;
$arg{arg} ||= [];
ref $arg{arg} eq 'ARRAY' or croak qq~Argument "arg" ist keine Arrayreferenz.~;
my $cmd = "$arg{perl} -c $arg{script}";
open(PIPE, "$cmd 2>\&1 |") # Rückgabewert = Prozeßnummer
or croak qq~"$cmd", Compilierung fehlgeschlagen:\n$!~;
my @line = <PIPE>;
close PIPE;
@line == 1 and $line[0] =~ /OK/
or croak "Compilierung fehlgeschlagen:\n" . join '', @line;
Win32::Process::Create
( my $process,
$arg{perl},
join(' ', 'perl', $arg{script}, @{$arg{arg}}),
0,
DETACHED_PROCESS,
'.',
) or croak Win32::FormatMessage Win32::GetLastError;
my $pid = $process->GetProcessID();
push @line, qq~Prozeß "$$" hat Hintergrundprozeß "$pid" gestartet und wartet auf Ergebnis oder Fehler.~;
return wantarray ? ($process, \@line) : $process;
}
\n\n
<!--EDIT|steffenw|1085579172-->
$SIG{USER} = sub {love 'Perl' or die};