my $param_hash; foreach my $nar (@nar) { my ( $cwd, $prm ) = split( " - ", $nar->[0] ); my $rest = [ @$nar[ 1 .. 2 ] ]; push @{ $param_hash->{$cwd}->{$prm} }, $rest; } print Dumper $param_hash;