Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Symbolic references

by LanX (Canon)
on Apr 15, 2013 at 04:35 UTC ( #1028672=note: print w/ replies, xml ) Need Help??


in reply to Symbolic references

> so is there a better way to accomplish what I'm trying to do?

DB<100> $path='var1/var2/var3' # input => "var1/var2/var3" DB<102> @path=split /\//,$path # extract path => ("var1", "var2", "var3") DB<103> $hash_ref->{var1}{var2}{var3}=42 # init nested test-hash => 42 DB<104> $node=$hash_ref # set start => { var1 => { var2 => { var3 => 42 } } } DB<105> $node=$node->{$_} for @path # walk down path => "" DB<106> $node # check result => 42

HTH! =)

Cheers Rolf

( addicted to the Perl Programming Language)


Comment on Re: Symbolic references
Download Code
Re^2: Symbolic references
by Anonymous Monk on Apr 15, 2013 at 05:31 UTC

    You've partially lost me with that answer.

    What if I may have a variable number of variables..
    program.pl var1 program.pl var1/var2 program.pl var1/var2/var3
    etc? Is there a programatic way to read N variables into the reference?
      I've changed my code to be less terse and hopefully better understandable step by step.

      > What if I may have a variable number of variables..

      you can put a unlimited anount of elements into '$path' and it will work as long as the intermediate values really exist within the nested hashes (otherwise the result is undef).

      > Is there a programatic way to read N variables into the reference?

      ??? what do you mean here with "reference"?

      Cheers Rolf

      ( addicted to the Perl Programming Language)

        I used the wrong word 'reference' it should have been variable. I've tried to impliment your code below, but I'm still lost...
        foreach $argnum (0..$#ARGV){ print "$ARGV[$argnum]\n"; my $path=$ARGV[$argnum]; @path=split /\//,$path; $node=node->{$_} for @path; print $node; } print "\n"; }

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1028672]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2015-07-04 17:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (60 votes), past polls