[Melbourne-pm] How to create data structures with 'default values'
Timothy S. Nelson
wayland at wayland.id.au
Mon Nov 17 19:08:39 PST 2008
On Mon, 17 Nov 2008, Alec Clews wrote:
> G'Day Perl Bunnies,
>
> I have created a hash structure with a set of environment specific keys
> and values.
>
> * There is a different hash for each of the environments.
>
> * Many of the values are the same (default) across all the
> environments.
>
> What is the easy way of setting up the defaults once and then have each
> environment overwrite the default values with specific settings?
>
> Currently I have a hash of defaults. However it's a pain to define each
> specific value or assign the default value for every single key in every
> single environment.
Is this the sort of thing you were thinking of?
------------------------------------------------------------
#!/usr/bin/perl
use Data::Dumper;
%defaults = (
key1 => "value1",
key2 => "value2",
key3 => "value3",
);
$specifics = {
key2 => "value4",
};
%keyhash = map { $_ => 1 } keys %defaults, keys %$specifics;
%actual = map {
$_ => exists($specifics->{$_}) ? $specifics->{$_} : $defaults{$_}
} keys %keyhash;
print Dumper \%keyhash, \%actual;
------------------------------------------------------------
I've made %defaults a hash and $specifics a hash reference, but that
was just to demonstrate more things.
---------------------------------------------------------------------
| Name: Tim Nelson | Because the Creator is, |
| E-mail: wayland at wayland.id.au | I am |
---------------------------------------------------------------------
----BEGIN GEEK CODE BLOCK----
Version 3.12
GCS d+++ s+: a- C++$ U+++$ P+++$ L+++ E- W+ N+ w--- V-
PE(+) Y+>++ PGP->+++ R(+) !tv b++ DI++++ D G+ e++>++++ h! y-
-----END GEEK CODE BLOCK-----
More information about the Melbourne-pm
mailing list