1 2 3
my $fh = undef; open $fh, "|/usr/sbin/sendmail.bat -t" or die "Fehler: $!"; print $!;
QuoteThis means that the value of $! is meaningful only immediately after a failure
1
2
3
4
5
6
7
8
9
10
11
12
13
$! If used numerically, yields the current value of the C "errno"
variable, or in other words, if a system or library call fails,
it sets this variable. This means that the value of $! is
meaningful only immediately after a failure:
if (open my $fh, "<", $filename) {
# Here $! is meaningless.
...
} else {
# ONLY here is $! meaningful.
...
# Already here $! might be meaningless.
}
1 2 3
my $fh = undef; open $fh, "|/usr/sbin/sendmehl -t" or die "Fehler: $!"; print "Weiter gehts..."; # komischerweise gehts auch weiter!
QuoteDer Befehl "/usr/sbin/sendmehl" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
2011-06-04T18:47:55 GwenDragonWie testest du da eine Windows-Umgebung? In einem Emulator?
1
2
3
4
5
6
7
8
$ perl -wE'
open my $fh, q{|/usr/bin/foobar "test"} or die "Could not open";
say "opened";
close $fh or die "Could not close: $?"
'
opened
sh: /usr/bin/foobar: not found
Could not close: 32512 at -e line 4.
1 2 3 4 5
if(defined $fh){ # gehe davon aus, dass $fh definiert ist # schreibe Text in das Handle close $fh; # und hier schlägt's dreizehn ;) }
QuoteDas ganze hängt damit zusammen das viele Betriebssysteme bei einer Pipe die Daten, die übertragen werden sollen puffert. Das bedeutet, dass das Programm hinter der Pipe erste gestartet wird, wenn schon Daten übertragen wurden, oder die Pipe geschlossen wird.
2011-06-06T09:30:18 topegDas ganze hängt damit zusammen das viele Betriebssysteme bei einer Pipe die Daten, die übertragen werden sollen puffert.
2011-06-04T18:47:04 GwenDragonWelchen Grund hat es, dass du unter Windows kein Laufwerk für den Pfad auf die Batchdatei verwendest?