use strict; package Foo; use vars qw( $foo ); $foo = 100; package Bar; use vars qw( $foo ); $foo = 200; package Baz; use vars qw( $foo ); $foo = 300; package main; my $package = (qw( Foo Bar Baz ))[ int rand 3 ]; my $foo = $main::{"${package}::"}{foo}; $foo = ${ *{$foo}{SCALAR} }; print "($foo)\n";