Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Using OO hash

by meraxes (Friar)
on Nov 27, 2007 at 21:53 UTC ( #653383=note: print w/ replies, xml ) Need Help??


in reply to Using OO hash

As moritz said, this isn't OO, but the second line will work with one small modification:

print "$BldEnv{TTT2}->{VersionTwo}\n";

Your version didn't work because the first -> was trying to dereference $BldEnv as though it were a reference to a hash. But WAIT! $BldEnv doesn't exist! You declared %BldEnv. Different animal! Despite using the $ sigil to get at hash values, when you added the -> after it, Perl was looking for a SCALAR variable and ignoring the HASH that you defined!

Perl's syntactic sugar allows you to get around derefencing the 'TTT2' hash using ->. As such, the first one is better.

Further to this, you really don't need to do string interpolation... can get a little messy with multi-level data structures. You could just do:

print $BldEnv{TTT2}{VersionTwo},"\n";

That way the variable is easier to see and prevents a number of interpolation pitfalls. If you're feeling adventurous, you could install the Perl6::Say module so you don't have to append that "\n" to the end like so:

use Perl6::Say; say $BldEnv{TTT2}{VersionTwo};

The "\n" is auto-appended by say.

What you should _definately_ always do do is begin each script with:

use strict; use warnings;

This would have thrown an error on your last print statement telling you that you that $BldEnv hadn't been declared, cluing you in that you're doing something wrong.

Happy Perl-ing!

update: expanded on difference between $BldEnv{key} and $BldEnv->{key}.

update the second: fixed errorneous variable naming.

--
meraxes


Comment on Re: Using OO hash
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2015-07-30 03:22 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 (269 votes), past polls