#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @tables; while (){ chomp; next if m/^\|/; if (m/^\[Wertetabelle\d\]/){ # neue Tabelle anlegen push @tables, []; } elsif (m/^\[Zeile\]/) { # neue Zeile anlegen push @{$tables[-1]}, []; } else { # Daten reinschaufeln: push @{$tables[-1][-1]}, [split]; } } print Dumper \@tables; __DATA__ [Wertetabelle1] | [Zeile] A1 3.227 A2 1.127 A3 -1.471 [Zeile] B1 6.684 B2 1.054 ...