This was bugging me for AGES ! So I thought I would register and give something back to the Monks....
This snippet does four things:
Passes a Hash by reference (function b)
Adds some key/value pairs to the hash
Prints the hash using a recursive function (so the hash can be in any form, i think)
Passes (in effect) the hashes within the main hash to the recursive function.
It's taken me a while to work out references in perl. I hope it is useful to someone.
#!/opt/bin/perl5
my %c;
b(\%c);
#print as normal
if(0)
{
for $i (keys %c)
{
print "$i = $c{$i}\n";
for $a (keys %{$c{$i}})
{
print "$i = $c{$i} = $c{$i}{$a}\n";
}
}
}
sub b
{
my($c)=@_;
$$c{b} = 'b';
$$c{c} = 'c';
$$c{b}{a} = 'ba';
$$c{b}{v} = 'bv';
$$c{b}{v}{g} = 'bvg';
print "printing c{b}{v} = $$c{b}{v}\n";
recref($c,"");
}
#pass this function a reference to a hash
sub recref
{
my($cref,$str)=@_;
my $i;
my $prefix;
for $i (keys %{$cref})
{
$prefix = $str . "." . $i;
print "$prefix = $$cref{$i}\n";
recref($cref->{$i},$prefix);
}
}
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.