c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "sub flexi { my ($str) = @_; ;; my ($string, $special) = map { uc, scalar reverse } $str; ;; return wantarray ? (string => $string, special => $special) : $string ; } ;; my %hash = flexi('foobar'); dd \%hash; ;; my $string = flexi('foobar'); dd $string; " { special => "raboof", string => "FOOBAR" } "FOOBAR" #### c:\@Work\Perl\monks>perl -wMstrict -MData::Dump -le "sub flexi { my ($str) = @_; ;; my ($string, $special) = map { uc, scalar reverse } $str; ;; return wantarray ? ($string, $special) : $string ; } ;; my $string1 = flexi('foobar'); dd $string1; ;; my ($string2, $special) = flexi('foobar'); dd $string2, $special; " "FOOBAR" ("FOOBAR", "raboof")