# So, how to get $Foo::Str without soft ref? #### use strict; package Foo; use vars qw($str); # $Foo::str created $str = 'foo str'; package main; my $pack = "Foo::"; my $var = "str"; print ${*{${$main::{$pack}}{$var}}{SCALAR}}; __END__ foo str #### use strict; $Foo::str = 'foo str'; my $class = 'Foo'; my $value = eval "\$$class\::str"; print $value,$/; #### package Foo; use vars qw($str); $str = "foo str"; package main; my $pack = "Foo::"; my $var = "str"; print "$_: ",(defined ${$main::{$pack}}{$_} ? 'yup' : 'nope'),$/ for qw(str bar); __END__ str: yup bar: nope #### $\=$/; use strict; use warnings; package Foo; use vars qw($str); $str = "foo str"; package main; my $pack = "Bar::"; my $var = "str"; print "yup" if defined ${$main::{$pack}}{$var}; /::$/ and print for keys %main:: __END__ version:: Tie:: utf8:: re:: CORE:: DynaLoader:: mro:: strict:: attributes:: Bar:: <----here Regexp:: vars:: UNIVERSAL:: Foo:: main:: Carp:: PerlIO:: IO:: Internals:: warnings:: DB::