... my @result; while (local $_ = ) { my @parts = split /\|/; if (grep {$_ eq $input} @parts) { push @result, [@parts]; } } for my $cur_res (@result) { print join(' - ', @$cur_res). "\n"; } __DATA__ ...