And if you fix it to $main::a, it'll be pushing a ref to an array with one element, which element is an array ref, which isn't what you want either.
Actually,that is exactly what he wants and what both you and I have described. :) The element in the array ref is in fact a value and not another array.
$ cat pm1080886.pl
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @hd = ( [] );
my $a = [0.25];
my $b = [0.25, 0.5];
push @hd, $a;
push @hd, $b;
print Dumper(\@hd);
exit;
__END__
$ ./pm1080886.pl
$VAR1 = [
[],
[
'0.25'
],
[
'0.25',
'0.5'
]
];
It helps to remember that the primary goal is to drain the swamp even when you are hip-deep in alligators.