use strict; use Data::Dumper; my @bsp = ( "a b 3 4 eins.txt", "c d 7 2 zwei.txt", "e f 4 4 drei.txt"); for my $i (0..$#bsp){ my @vals = split (/\s+/,$bsp[$i]); $vals[4] =~ s/\.txt$//; $bsp[$i] = {$vals[4] => [$vals[2],$vals[3]]}; } print Dumper(\@bsp);