in reply to pushing multidimensional arrays

There's not really such thing as a 2d array in Perl. You have arrays of references to arrays, so $data[$i] is a reference to an array.

If you'd normally use @array, the reference equivalent is @{ $aref }, as per References Quick Reference. Therefore, you want

push @{ $data[$i] }, $norm;

or simply

$data[$i][3] = $norm;