for my $thing (grep defined, @oldlist) { if (/(\d+-PVC_\d+)/) { my $item = $1; my $str1 = foo($item) || ''; my $str2 = bar($item) || ''; push @newlist, $str1 . '/' . $str2; } else { warn "Do not know what '$thing' is\n"; } }