sub alter { my @newlist; for ( @_ ){ my $name = is_name($_) or next; push @newlist, uc($name); } @newlist; } #### sub alter { grep $_, map { uc is_name($_) } @_; } #### sub alter(*@a) { gather for @a { my $name = is_name($_); take uc $name if $name; } } #### sub alter(*@a) { gather for @a.map({ is_name($_)}) { take .uc if $_; } }