[26] Come mai open() non restituisce un errore quando l'apertura di una pipe fallisce?
Se il secondo argomento ad una open su pipe contiene metacaratteri della
shell, perl esegue una fork(), e poi una exec() di una shell per
decodificare i metacaratteri e poi lanciare il programma desiderato. Se
il programma non può essere eseguito, il messaggio di errore giunge
alla shell, non a Perl. Tutto ciò che il vostro programma può
scoprire è se è stato possibile avviare con successo la
shell stessa. Tuttavia, potete sempre catturare lo STDERR della shell e
controllare eventuali messaggi di errore. Consultate "Come posso catturare STDERR da un comando esterno?" contenuto sempre in questo
documento, oppure utilizzate il modulo IPC::Open3.
Se l'argomento di open non contiene metacaratteri della shell, Perl
esegue direttamente il comando, senza utilizzare la shell, e può
correttamente riportare se il comando sia partito o meno.
Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan
Torkington. Tutti i diritti riservati.
Questa documentazione è libera; puoi ridistribuirla e/o
modificarla secondo gli stessi termini applicati al Perl.
Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di
codice in questo file sono rilasciati al pubblico dominio. Potete, e
siete incoraggiati a farlo, utilizzare il presente codice o qualunque
forma derivata da esso nei vostri programmi per divertimento o per profitto.
Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese
ma non è obbligatorio.
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per
porre quesiti di tipo tecnico, per rimanere aggiornato su meeting,
incontri, manifestazioni e novità su Perl.it. Iscriviti!