#!/usr/bin/perl use strict; use warnings; use Data::Dumper; # Datei die überprüft werden soll my $file = '/path/to/file'; # alle Pattern my @pattern = qw(test001 test002); # Hash mit Ergebnissen my %hash; { open my $fh, '<',$file or die $!; local $/ = "\n\n"; # $/ auf "Leerzeile" setzen while(my $entry = <$fh>){ my ($key) = $entry =~ m!\[(.*?)\]!; for my $line(split(/\n/,$entry)){ for my $pat(@pattern){ if($line =~ /\Q$pat\E/){ push @{$hash{$pat}},$key; next; } } } } close $fh; } print Dumper(\%hash);