c:\@Work\Perl\monks>perl -wMstrict -le "use Data::Dump qw(dd); ;; print 'perl version: ', $]; ;; init($_) for \my ($scalar, @ra, %ha); dd $scalar, \@ra, \%ha; ;; sub init { my ($r) = @_; ;; return 'ARRAY' eq ref $r ? @$r = (9, 8, 7) : 'HASH' eq ref $r ? %$r = qw(one 1 two 2 three 3) : 'SCALAR' eq ref $r ? $$r = 42 : die qq{unknown ref type: '$r'} ; } " perl version: 5.008009 (42, [9, 8, 7], { one => 1, three => 3, two => 2 })