in reply to Accessing class/subclass variables

I'm not sure why you need $name to be a global, but you could try something like this:
use strict; use warnings; package abstracted; our $name = 'parent'; sub get_that_name { my $self = shift; my $class = ref $self; no strict 'refs'; return ${"${class}::name"}; } package abstracted::versionA; use base 'abstracted'; our $name = 'vA'; package abstracted::versionB; use base 'abstracted'; our $name = 'vB'; package main; foreach my $obj ( map { bless [] => $_ } qw/abstracted abstracted::versionA abstracted::versionB/) { print $obj->get_that_name."\n"; }
output:
parent vA vB
see also symbolic references