#! /usr/bin/perl use strict; use warnings; my %hash; while(my $line = ){  my %inner_hash;  foreach my $item(split(/,/,$line)){    my ($key,$val) = split(/=/,$item);    $key =~ s/[^\w]//g;    $val =~ s/[^\w&]//g;    $inner_hash{$key} = $val;  }  push(@{$hash{$inner_hash{URSPRUNG}}},\%inner_hash); } foreach my $key(keys(%hash)){  foreach my $elem(@{$hash{$key}}){    my ($base,@vols) = split(/&/,$elem->{VOL});    foreach(@vols){      print $key," ",$elem->{CODE}," ",$base.$_,"\n";    } print $key," ",$elem->{CODE}," ",$base,"\n" unless(@vols);  } } # _ _DATA_ _ ohne Leerzeichen!! _ _DATA_ _ :URSPRUNG=123,CODE=320317440,VOL=0&1&2&3&4&5&6&7&8&9! :URSPRUNG=123,CODE=3203177290,VOL=0&1&2&3&4&5&6&7&8&9! :URSPRUNG=123,CODE=320317770,VOL=0&1&2&3&4&5&6&7&8&9! :URSPRUNG=123,CODE=32021883,VOL=3&4&5! :URSPRUNG=123,CODE=4203204,VOL=4&5&6&7! :URSPRUNG=125,CODE=32021883,VOL=3&4&5! :URSPRUNG=125,CODE=4203204,VOL=4&5&6&7! :URSPRUNG=124,CODE=32021883,VOL=3&4&5! :URSPRUNG=124,CODE=4203204,VOL=164564&5&6&7! :URSPRUNG=124,CODE=4203206,VOL=124&5&6!