Default values for hashes are easy (and the common idiom for configs...):
#!/usr/bin/perl -w
my %defaults = (name => "George", age => 26);
my %config = (age => 18);
my %hash = (%defaults, %config);
print "$_ : $hash{$_}\n" foreach (keys %hash);
Any keys defined in %config will overwrite any keys in %defaults, but if the key isn't in %config the default will prevail. If I'm not mistaken this in the Perl Cookbook somewhere.
Don't know how you'd only set part of an array without setting all of it without doing something ugly and iterating through each item in each array and seeing where there's a config value and where there's a default.
Gary Blackburn
Trained Killer