use Devel::Size qw(total_size); my @aoa = map { [ int rand 1_000_000, int rand 20_000, chr 32 + int rand 40 ] } 0 .. 450_000; my @aop = map { pack "l>s>A", @$_ } @aoa; say "Unpacked: ", total_size (\@aoa); say "Packed: ", total_size (\@aop); => $ perl test.pl Unpacked: 100800288 Packed: 28800128