Devel::Size is very informative:
use strict;
use Devel::Size qw(size total_size);
my $double;
my @array;
my @matrix;
$double = 1.0;
for my $x (0..9) {
$array[$x] = 1.0;
for my $y (0..9) {
$matrix[$x][$y] = 1.0;
}
}
print "Double: ", size(\$double), ", ", total_size(\$double), "\n";
print "Array: ", size(\@array), ", ", total_size(\@array), "\n";
print "Matrix: ", size(\@matrix), ", ", total_size(\@matrix), "\n";
gives these results running on my Alpha with Tru64:
Double: 24, 24
Array: 168, 408
Matrix: 168, 4488
So a matrix of 10*10 elements cost 4.5 K, giving 45 bytes pr element - not too bad.
Try other sizes for yourself, and go either the PDL or the Inline::C way, as others have recommended.