#!/usr/bin/env perl -l use strict; use warnings; use Data::Dump; for (1..3) { my $ref1 = gimme(); $ref1->[0]{box}{y}{z} = $_; $ref1->[0]{box}{w} = 'x' if $_ == 2; $ref1->[0]{box}{a}{d} = 4 if $_ == 3; trace($ref1); my $ref2 = gimme(); trace($ref2); } sub gimme { [ { box => { a => { b => 2, c => 3 }, y => {} } } ] } sub trace { my ($ref) = @_; print 'Tracing: '; print join ' -> ', $ref, $ref->[0], $ref->[0]{box}, $ref->[0]{box}{y}; dd $ref; return; }