# untested: my @urls; for my $outer ( keys %hash ) { for my $inner ( keys %{ $hash{$outer} } ) { # maybe check before, if entry "url" exists or is defined ... push @urls, $hash{$outer}->{$inner}->{url}; } } #### for my $outer ( keys %hash ) { for my $inner ( keys %{ $hash{$outer} } ) { push @urls, map { $_->{url} } @{ $hash{$outer}->{$inner} } } }