laziness, impatience, and hubris | |
PerlMonks |
comment on |
( [id://3333]=superdoc: print w/replies, xml ) | Need Help?? |
As moritz said, this isn't OO, but the second line will work with one small modification:
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:
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:
The "\n" is auto-appended by say. What you should _definately_ always do do is begin each script with:
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 In reply to Re: Using OO hash
by meraxes
|
|