#!/usr/bin/perl use warnings; use strict; my $mixed = [ 'scalar', ['a', 'B', ['c', 'd'], 'e'], {And=>{'A'=>'A'}}, \'a scalar ref' ]; print_structure($mixed); sub print_structure { my ($data) = @_; foreach (ref $data) { /^$/ and print($data,"\n"), next; /^SCALAR/ and print('-> ', $$data, "\n"), next; /^HASH/ and do { print "\n"; foreach my $key (keys %{$data}) { print "$key => "; print_structure ($data->{$key}); } next; }; /^ARRAY/ and do { print "\n"; for my $elc (0..$#{$data}) { print "[$elc] : "; print_structure ($data->[$elc]); } next; }; print "?$data?"; } }