|
chatserver.pl |
my $handler = $handler{$handle}; $handler->{'ibuf'} .= $buffer; if ($handler->{'ibuf'} =~ /^(.*\n)(.*)/s) { if ($1 =~ /^\r?\n$/) { &{$handler->{'readline'}}($handle, ""); } else { foreach my $line (split /\r?\n/, $1) { &{$handler->{'readline'}}($handle, $line); } } $handler->{'ibuf'} = $2; } |
Da die Eingabe beliebig fragmentiert sein kann,
können unvollständige Zeilen eintreffen oder mehrere
Zeilen auf einmal.
| |
Deswegen wird das Eingelesene (abgelegt in $buffer)
zuerst an ibuf gehängt und anschließend wird
überprüft, ob mindestens eine vollständige Zeile damit
vorliegt. Wenn ja, werden alle vollständigen Zeilen
einzelen an den Bearbeiter, der bei readline eingetragen ist,
weitergeleitet.
|
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000 |