in reply to Symbolic references
As you're reading from the commandline, you'll probably want either a way to warn of invalid keys or, perhaps, ignore them. The following does the latter.
A valid list of keys:
$ perl -Mstrict -Mwarnings -E ' my %x = ( a => { b => { d => 4, e => 5 }, c => 3 } ); my $y = \%x; for (split /\// => $ARGV[0]) { last unless ref $y; $y = $y->{$_}; } say $y if defined $y; ' a/b/e 5
A partially valid list of keys:
$ perl -Mstrict -Mwarnings -E ' my %x = ( a => { b => { d => 4, e => 5 }, c => 3 } ); my $y = \%x; for (split /\// => $ARGV[0]) { last unless ref $y; $y = $y->{$_}; } say $y if defined $y; ' a/c/e 3
An invalid list of keys:
$ perl -Mstrict -Mwarnings -E ' my %x = ( a => { b => { d => 4, e => 5 }, c => 3 } ); my $y = \%x; for (split /\// => $ARGV[0]) { last unless ref $y; $y = $y->{$_}; } say $y if defined $y; ' a/d/e
-- Ken
|
|---|