in reply to Will a substitution in an if/else control structure default to $_?

You do know that the second (else) substitution will never happen, don't you? The result of $table->cell($rownum, 0..2) does not have \xa0 in it (it didn't match the first match). So, you can simplify your code and write
$table->cell($rownum, 0..2) =~ s/\xa0\d+/ /;
(hoping your method ->cell() returns a lvalue, of course)
Update: after looking at your code and TableExtract docs, I think what you want is something like:
foreach my $rownum (0..$#totalrows) { s/\xa0\d+/ /, push @title, $_ for $table->cell($rownum, 0) || ''; s/\xa0\d+/ /, push @teach, $_ for $table->cell($rownum, 1) || ''; s/\xa0\d+/ /, push @aides, $_ for $table->cell($rownum, 2) || '' }
[]s, HTH, Massa (κς,πμ,πλ)