http://qs321.pair.com?node_id=127136


in reply to Server Problem

The problem is probably in your conditionals; $command == 'start' compares $command and 'start' as numbers, likely converting them both to zero first then finding them always equal. You probably meant to use $command eq 'start', etc.

You may find it useful to switch to a dispatch table instead of a whole bunch of if statements:

sub handle_start { my($client,$param) = @_; print $client "Welcome to the game: $param\n"; } # ... more commands ... my %commands = ( start => \&handle_start, # ... more ... ); sub handle { # ... if (not exsits $commands{$commands}) { # bad command } else { # run command $commands{$command}->($client,$param); } # ... }

(A side note: split always treats it's first argument as a regex, even if it is single-quoted like you have it. As a matter of style, I would advise using /<div>/ or similar so as not to make it look like it doesn't take a regex...)