use constant { THIS => 0, THAT => 1, THEOTHER => 2, ... TEMPL1 => 'N A10 S', }; my @discrete = unpack TEMPL1, read( $file, $size ); print "THIS:", $discrete[ THIS ]; #### sub get2DArray { my( $x, $y, $templ, $templSize, $fh ) = @_; my @array; for my $y ( 0 .. $y - 1 ) { push @array, [ unpack $templ . $x, read( $fh, $templSize * $x ) ]; } return \@array; } my $array2D = get2DArray( 100, 100, 'N', 4, $fh );