Cosi' facendo e sorta un'altra complicazione...
Il codice sottostante non si comporta come dovrebbe!
si mette in ascolto e ogni 10 secs dovrebbe eseguire "temporizzata",
ma invece dopo i primi 10 secs mi esegue "temporizzata" ma poi lo script
non sta
più in ascolto...roba da matti!
codice:
$socket->listen();
$SIG{'ALRM'} = \&temporizzata;
alarm(10);
while ( $client = $socket->accept() )
{
while ( $str = <$client> ) { syswrite $client, uc($str) . "\r\n"; }
}
sub temporizzata
{
my $dataora = gmtime(time());
print "\n",$dataora,"\n";
$SIG{'ALRM'} = \&temporizzata;
alarm(10);
}
alcontrario ho notato che se faccio un ciclo while(1) tutto va a
meraviglia:
codice:
$SIG{'ALRM'} = \&temporizzata;
alarm(10);
while (1) {}
sub temporizzata
{
my $dataora = gmtime(time());
print "\n",$dataora,"\n";
$SIG{'ALRM'} = \&temporizzata;
alarm(10);
}
ogni 10 secs mi esegue "temporizzata" !!!
ne consegue che io ho provato a fare questo:
codice:
$socket->listen();
$SIG{'ALRM'} = \&temporizzata;
alarm(10);
while (1)
{
$client = $socket->accept();
if ($client) {
while ( $str = <$client> ) { syswrite $client, uc($str) . "\r\n"; }
}
}
sub temporizzata
{
my $dataora = gmtime(time());
print "\n",$dataora,"\n";
$SIG{'ALRM'} = \&temporizzata;
alarm(10);
}
... e devo dire che funziona,ma non vorrei che i puristi del perl
storcessero il naso,ovvero
che differenza c'è nel prepararsi a ricevere un client con:
codice:
while ( $client = $socket->accept() ) { #code... }
e
codice:
while(1) { $client = $socket->accept(); # other code... }
Grazie a tutti!