in reply to expanding a PDL matrix

it's hard to give you a good solution without knowing what format you're storing your array in.

Anyway the following does all you ask for, and was inspired by your first response. I would point out that slurping data like this gives funny x,y coordinates when accessing elements from the array (but makes it easy to slurp and pring), eg...

$arr[y][x_from_top]
here's the full code...
#!/usr/bin/perl -w my @matrix1; while (<DATA>) { 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
---
my name's not Keith, and I'm not reasonable.