in reply to Arrays/Lists of Hashes

As kyle explained, you want

$inv->{ranges} = \@ranges;

And, in order to then iterate over $inv->{ranges} in your foreach loop, you'll also need to dereference it, like this:

foreach my $range ( @{$inv->{ranges}} ) { ... }