grep -E ' 900 ' | grep -v 1900 | grep -E -v '0 RE' | grep -E -v '0 WE' | grep -E -v '0 WAV' | grep -E -v '0 WA' | awk '{print \$3\";\", \$6\";\" }'");
That's an awful lot of greps, and they're all of the same "fixed-string"/-F variety. You could probably reduce the above to something like:
my @ls = $ssh2convey99->capture(q/disptest | fgrep ' 900 ' | fgrep -v
+1900 | grep -vE '0 ([RW]E|WA)' | awk '{print $3";", $6";" }'/);
...or replace the whole grep-awk chain with a Perl script!
perl -nle 'next if !/ 900 /||/1900/||/0 ([RW]E|WA)/; my @f = split; print "$f[2]; $f[5];"'
update: "0 WA" already takes care of "0 WAV"