PDA

View Full Version : [ PERL ] Aiutatemi ad interpretare uno script


Zerk
05-10-2010, 14:28
Salve avrei bisogno di aiuto nel capire se ci sono errori e se ho interpretato in modo corretto il seguente script.

NOTA: non l'ho scritto io, mi è stato consegnato senza commenti, che ho aggiunto in seguito. Io devo adattarlo per fargli fare un'altra cosa.

sub test_out()
{
my $file=$_[0]; # leggo il nome del file passato come parametro
while(1)
{
while(!(-e $file))
{
select(undef, undef, undef, 0.02); #controllo con una chiamata di sistema se il file è pronto
}

open(LETTURA,"< $file"); #apro il file in lettura
while($query=<LETTURA>) # siccome ogni riga contiene una query la eseguo
{
my $dbh = DBI->connect("dbi:mysql:ggg","$user","$pwd") or die "Non riesco a connettremi";
my $sth=$dbh->prepare($query);
$sth->execute();
$dbh->disconnect();
print "$query\n"; # stampo a video per debug?
}
system "rm $file"; # elimino il file
close(LETTURA); # chiudo l'handler ... ma come dopo aver eliminato il file?
}
}

Certe variabili sono definite esternamente al thread, quello che mi chiedevo è se è corretto eliminare il file e poi chiuderlo.

Zerk
07-10-2010, 10:46
Un' altro dubbio su questo script è in queste righe:

while(!(-e $file))
{
select(undef, undef, undef, 0.02);
}


dovrebbe controllare se il file esiste, in caso contrario entra nel ciclo che fa una chiamata di sistema con un timer, penso che l'intento sia controllare se il file è realmente pronto per essere processato, ma in questo caso se il file esiste la chiamata di sistema non viene effettuata o sbaglio?

Quindi bastava una sleep all'interno del ciclo.
Se invece si volesse controllare se il file è pronto, il codice così come è scritto non è corretto giusto?