#!/usr/bin/perl use 5.012; use warnings; my %matches; my @candidates = qw(Wort1 Wort2 wort3 wort4); while (my $line = ) { for my $candidate (@candidates) { push @{$matches{$candidate}}, $. if ($line =~ m/(^|[\s.;])\Q$candidate\E([\s.;]|$)/i); } } while (my ($candidate, $linenos) = each %matches) { say "$candidate found on line ", join(", ", @{$linenos}); } __DATA__ aaaaaaaaaaaaaaaaaaaaa.wort1;aaaaaaaa bbbbbbbbbbbbbb wort2 bbbbbbbbbbbbbbb ccccccccccccccccccccc wort3 cccccccc ddddddddddd wort1 dddddwort2dddddddd eeeeeeeeeeeeeeeeeeee wort4 eeeeeeeee