in reply to unclear what this means

%xyz is a 3-dimensional data structure, whose outer 2 layers are hash, and inner layer is array. Thus, to access an element in %xyz, you say:
my $value = $xyz {level1_key} {level2_key} [index];
So, to push something into the inner array of %xyz, you say:
push @{ $xyz {level1_key}{level2_key} }, $value;

Moreover, @item is a 2-D array. To access an element, you say:
my $value = $item[index1][index2];
To get one inner dimension fully as array ref, you say:
my $array_ref = $item[index1];
To get one inner dimension fully, you say:
my @values = @{ $item[index1] };

So you may wonder: if say $xyz{$item[1]}, it is using an array ref's stringified name as a hash key. It is weird but might be ok, because perl will ensure that every ref's stringified name is unique.