Thread Fehlervorsorge bei open an Pipe (3 answers)
Opened by RalphFFM at 2008-06-12 21:17

RalphFFM
 2008-06-12 21:17
#111001 #111001
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Gegeben seien folgende zwei kleinen Skripte (Prinzipdarstellung):
Code (perl): (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl
# eins.pl
use strict;
use warnings;
open (FH, '|-', "./zwei.pl") or die ("Kann zwei.pl nicht oeffnen: $!");
print FH "Einen schönen Gruss von Skript1\n";
close FH;
print "eins.pl ist zuende\n";

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
# zwei.pl
use strict;
use warnings;
$crash = "irgendetwas";  # <-- hier fehlt ein my ..
my ($input);
{
        undef $/;
        $input = <STDIN>;
}
print "$input\n";


Frage 1: Wieso die-ed eins.pl nicht, obwohl das Kompilieren+Ausführen von zwei.pl fehlschlägt?
(w/ use strict in Zusammenhang mit dem $crash ohne my)
Falls zwei.pl nur aus dem einen Befehl "die;" besteht, dann kann ich das Verhalten von eins.pl ja noch verstehen, STDIN wird halt dann einfach nicht aufgefangen. Aber daß open innerhalb eins.pl kein Problem hat wenn zwei.pl noch nicht mal ausgeführt werden kann, dann kann man ja wichtige Fehler nicht mehr abfangen mittels "or die ..". Denn was nützt es wenn zwar /usr/bin/perl ausgeführt werden kann aber das Skript nicht?

Frage 2: Wie könnte man in eins.pl registrieren, daß zwei.pl nicht ausgeführt werden kann, und somit auch die Datenübergabe natürlich scheitert?

View full thread Fehlervorsorge bei open an Pipe