my $str = 'i_motorart integer,d_kw decimal(7,2),i_kat integer'; my @pieces = $str =~ m/( # Speichere Wert (?: (?> # Backtracking verhindern [^,(]+ # Soviele kein Komma und # öffnen Klammer matchen wie möglich ) | # Oder: Wenn Komma oder Öffnen Klammer gefunden \( [^)]+ \) # Wenn öffnende Klammer dann bis zur nächsten # Schließenden Klammer gehen )+ # Bei einem Komma ist hier jetzt ende und ein # wir haben einen Match )/xg; # Mit Option g solange wiederholen # bis wir jeden Treffer haben print "$_\n" for @pieces;