@run{$runtype}{$pid}{keys %message} = values %message; # Error: Can't use subscript on hash slice while ( my ($k,$v) = each(%message) ) { $run{$runtype}{$pid}{$k} = $v; } # works fine