in reply to Another noob making a mess of variable scope....

As well as what toolic said, your function is returning a reference to a hash (i.e. a scalar), but when you call your function you assign it to a hash.

Either replace return \%config with return %config, or replace my %config=getAPPConfig() with my %config=%{getAPPConfig()} (but don't do both).

use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name