#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $string = q~START Beschreibung1|Wert1| Beschreibung2|Wert2| Beschreibung3|Wert3| ENDE START Beschreibung4|Wert4| Beschreibung5|Wert5| Beschreibung6|Wert6| ENDE~; my @parts = $string =~ /START(.*?)ENDE/sg; my @array; for my $part(@parts){ $part =~ s/\n//g; while($part =~ /(.*?)\|(.*?)\|/g){ push(@array,[$1,$2]); } } print Dumper(\@array);