while (<>) { # remove trailing whitespaces: s/\s+$//; # Remove CR and LF s/[\r\n]//g; if ((m/^<(.*)/) || (m/^\S+ <(.*)/)) { # store the previous command: if ($command ne "") { print "Adding: $command\n"; $response{$command} = $resp; $ordered{$command} = $result if $ordered_received; $resp = ""; $result = ""; $ordered_received = 0; $command = ""; } # a new command line: $command = $1; if ($command =~ /;/) { $command = uc($command) unless $case_sensitive; } } elsif ($ordered_received) { # collect the result lines $result .= "$_\r\n"; } else { # collect the response lines $resp .= "$_\r\n"; } }