$arr[y][x_from_top] #### #!/usr/bin/perl -w my @matrix1; while () { push @matrix1, [ split(/\s+/) ]; } my @matrix2 = empty_matrix(35,35); overwrite_matrix(\@matrix2, \@matrix1, 0, 0); print get_matrix(\@matrix1); print "\n"; print get_matrix(\@matrix2); #============================================================== sub empty_matrix { map {[ map{0}(1..$_[1]) ]} (1..$_[0]) } #============================================================== sub get_matrix { join("\n", map { join(",", @$_) } @{$_[0]} ) } #============================================================== sub overwrite_matrix { my ($array_ref1, $array_ref2, $x_offset, $y_offset) = @_; my $y = 0; foreach my $row_ref (@$array_ref2) { my $x = 0; foreach my $value (@$row_ref) { $array_ref1->[$y + $y_offset][$x + $x_offset] = $value; $x++; } $y++; } } __DATA__ 2.8017 0 0 0 0 0 0 0 1.2969 0 0 0 0 0 0 0 0.5495 0 0 0 0 0 0 0 0.2329 0 0 0 0 0 0 0 0.1953 0 0 0 0 0 0 0 0.1723 0 0 0 0 0 0 0 0.0959