È possibile utilizzare i backtics per eseguire il programma esterno e catturare la sua stdout
e stderr
.
Per impostazione predefinita i backticks scartare i stderr
e restituire solo la stdout
del program.So esterna
$output = `cmd`;
catturerà l'stdout
dei cmd programma e scartare stderr
.
Per catturare solo stderr
è possibile utilizzare descrittori di file della shell come:
$output = `cmd 2>&1 1>/dev/null`;
Per catturare sia stdout
e stderr
si può fare:
$output = `cmd 2>&1`;
utilizzando il sopra di voi non sarete in grado a differenciate stderr
da stdout
. Per separte stdout
da stderr
può reindirizzare sia in un file separato e leggere i file:
`cmd 1>stdout.txt 2>stderr.txt`;
Fatti un grande favore e passa un po 'di tempo su perldoc.perl.org - per i principianti le aree "Tutorials" e "FAQs". Esegui anche questo per familiarizzare con il sistema di Perl per accedere alle informazioni di aiuto sulla riga di comando: 'perldoc --help'. La risposta alla tua domanda specifica potrebbe essere stata trovata direttamente da ricerche da riga di comando come queste: 'perldoc -q capture' o' perldoc -q external'. – FMc
Si potrebbe voler esaminare 'qx', potrebbe avere modi per separare i flussi ed è facile da eseguire, ad es. 'qx (" command ");' –