Avevo il dubbio sul ~= / =~ : me lo dimentico sempre.

Non avevo capito che ce n'erano altri.
Allora e` meglio usare:
codice:
$str =~ s/_+$//;
altrimenti ti rimane un underscore se alla fine sono dispari.