#!/usr/bin/perl -w package MyTie1; sub TIEHASH { bless {}, shift; } sub FETCH { my $self = shift; my $key = shift; return [{foo=>'bar'}]; } package MyTie2; sub TIEHASH { my $self= {}; my %hash; $self->{hash}= \%hash; tie %hash, 'MyTie1'; bless $self, shift; } sub FETCH { my $self = shift; my $key = shift; return [{val => $self->{hash}->{key}}]; } package main; my %hash; tie %hash, 'MyTie2'; use Data::Dumper; foreach my $user (@{$hash{one}}){ print Data::Dumper->Dump([$user],['user']); } __END__ Can't use an undefined value as an ARRAY reference at refetch.pl line 33.