use strict; use warnings; undef $/; my $text = ; my @result = map { m/'(.*?)'/g } grep /source/, split /\n/, $text; use Data::Dumper; print Dumper \@result; __DATA__ 'pfad' source 'pfad2' was soll passieren, wenn es 2 'pfade' 'gibt'? source 'pfad3' 'pfadX' 'pfad4' source was ganz angeres und 'nochwas' anderes