sub decrement { my $string = shift; return '' unless length($string); my @parts = split//,$string; my $last = pop @parts; if( ord($last) == 32 ) { my $ret = decrement(join '',@parts); $ret .= (scalar @parts) ? "\x7E" : ''; return $ret; } else { my $ret = join '',@parts,chr(ord($last)-1); return $ret; } }