What I’d do differently now: at least this:
sub trim2 {
return trim2 $_ if not @_;
return map { s/^\s+//; s/\s+$//; $_ } my @c = @_
if defined wantarray;
for ( @_ ) { s/^\s+//, s/\s+$// }
}
And someone who can be bothered should benchmark the following variants:
sub trim3a {
return trim3a $_ if not @_;
s/^\s+//, s/\s+$// for
wantarray ? my @c = @_ :
defined wantarray ? my $c = $_[-1] :
@_;
@c ? @c : $c ? $c : ();
}
sub trim3b {
return trim3b $_ if not @_;
my $w = wantarray;
s/^\s+//, s/\s+$// for
$w ? my @c = @_ :
defined $w ? my $c = $_[-1] :
@_;
@c ? @c : $c ? $c : ();
}
Makeshifts last the longest.