I've been in your exact same position before. Here's a snippet which may save you some hair-pulling:
#!/usr/bin/perl -w
use strict;
use Data::Dumper;
my $s = {
foo =>'bar',
baz => {
troz => 'zort',
blort => {
poit => 'qux',
}
}
};
print Dumper $s;
# This works in 5.6.1 and later
set($s, qw/baz blort poit/) = "Whee!";
set($s, qw/baz troz/) = "Joy!";
# In 5.6.0 (and earlier) you have to:
# set($s, qw/baz blort/)->{poit} = "Whee!";
# set($s, qw/baz/)->{troz} = "Joy!";
print Dumper $s;
sub set : lvalue {
@_ == 1 ? $_[0] : set($_[0]{$_[1]},@_[2..$#_]);
}
perl -pe '"I lo*`+$^X$\"$]!$/"=~m%(.*)%s;$_=$1;y^`+*^e v^#$&V"+@( NO CARRIER'