PDA

Visualizza la versione completa : Come posso lo posso migliorare?


Muke
10-05-2004, 02:10
Ho scritto questo programmino che mi serve per poter masterizzare file mpc usando gnome toaster.

Praticamente gli passo il file mpc e lui mi restituisce la scritta "Playback length: xxm:yys" ... come fa ogginfo per i file ogg.
Con gnome toster leggo la scritta e masterizzo.
Per leggere xxm:yys (insomma la lunghezza del file musicale) chiamo il comando mppdec inviando l'output su /dev/null. Lo STDERR lo 'dirotto' invece su un file temporaneo che leggo e poi scancello.
Lo script funziona ma mi chiedevo ... non si può inviare direttamente lo STDERR in una variabile?
Ho cercato un po' su internet ma non sono riuscito a trovare nulla.
Ciao.
Muke.

#!/usr/bin/perl

$nome_file=$ARGV[0];
open(STDERR, ">appoggio");
system ("mppdec","$nome_file","/dev/null");
open(appoggio,"<appoggio");
@appoggio=<appoggio>;
foreach $appoggio(@appoggio) {
$messaggistderr=$messaggistderr.$appoggio;
}
close (appoggio);
unlink (appoggio);
$messaggistderr =~ /(..)\:(..)\.(.)/;
print 'Playback length:',$1,'m:',$2,'s',"\n";

shishii
10-05-2004, 23:17
Ciao,

lo STDIN lo STDERR e lo STDOUT sono tre filehandle precostituiti automaticamente da Perl. se vuoi catturare gli errori senza interrompere il programma guarda la funzione warn.

Muke
18-05-2004, 01:37
Ciao Shishii.
Grazie per la risposta.
Ho guardato per la funzione warn ma non ho capito molto :) ... lo script comunque funziona e lo posso usare così :)
Mi chiedevo solo se c'era un metodo + veloce per non dover appoggiare lo STDERR su un file temporaneo che leggo e poi distruggo...
Ciao.
Muke.

shishii
18-05-2004, 11:11
La funzione warn serve proprio a catturare lo STDERR

Loading