in reply to Using 2d hash to print a matrix

Always start your script with use strict; use warnings;, and declare your variables with my. It will catch some of simple errors you are making, like writing to an unopened file handle.

It will also warn you that $toks[3] and $toks[4] are undefined, since none of your input lines contains more than three fields. In fact none of your input lines contain more than one field, because you split at a tab character, but the fields in your input file are just separated by spaces.

Also there's no need to include the word hash in the variable names, because the % sigil at the front tells you already that it's a hash.

When you have fixed these problems in your code, feel free to post another version, and we'll work on the actual program logic.