Lösung mit einem Prozeß IX

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

chatserver.pl
sub handle_line {
   my ($handle, $line) = @_;
   my $handler = $handler{$handle};
   if ($line eq "quit" || $line eq "exit") {
      quit($handle);
   } elsif ($handler->{nickname} eq "") {
      $line =~ s/^\s+//;
      $line =~ s/\s+$//;
      if (defined($nickname{$line})) {
         send_msg($handle, "Nickname is in use. " .
            "Try another one.");
      } elsif ($line =~ /^\w+$/) {
         $handler->{nickname} = $line;
         $nickname{$line} = $handler;
         send_msg($handle, "$line, you are welcome!");
         broadcast($line, "has joined the channel.");
      } elsif ($line =~ /^$/) {
         send_msg($handle, "Your nickname, please.");
      } else {
         send_msg($handle, "Nicknames should be " .
            "alphanumeric, please.");
      }
   } else {
      broadcast($handler->{nickname}, $line);
   }
}

*Wenn die eingelesene Zeile kein Abschiedskommando ist und auch nicht der beim Anfangsdialog erwartete Name ist, dann wird er an alle Anwesenden mit broadcast weitergeleitet.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996 - 2003 Andreas Borchert, in HTML konvertiert am 01.10.2003