no strict refs; use Data::Dumper; for $varname ('foo', 'bar', ':', '@%$!') { ${$varname} = "some scalar value"; @{$varname} = ('list', $$varname, \$$varname); %{$varname} = ( scalar => \$$varname, array => \@$varname ); print "-"x$=, $/; ::($varname); } sub :: { for (0) { print "For the variables named '$_[$_]':\n"; print Dumper(${$_[$_]}, \@{$_[$_]}, \%{$_[$_]}); } }