in reply to Re: trouble with evaluate
in thread trouble with evaluate

Thank you! You guys are really amazing. I think your approach is basically the same as what sundialsvc4 was suggesting. I'm still struggling to grasp how Perl objects work. JavaFan wrote "A Perl object is a reference that's blessed into a package", and if I understand your code right, the reference in this case is to the hash that contains the parameters ("bless \%params, $class"). I agree that what I'm trying to do is trivial, but I am none the wiser about why none of the other versions suggested worked, except that the evaluation of the passed variable name was problematic.

Replies are listed 'Best First'.
Re^3: trouble with evaluate
by GrandFather (Saint) on Apr 09, 2011 at 03:32 UTC

    Perl objects are a reference to something (hash, scalar, array, code, ... - it doesn't much matter what) with a little magic stirred in. See Not quite an OO tutorial for a light weight introduction to Perl OO.

    The trap in Perl is that, without strictures (use strict; use warnings; - which you should always use btw.) you can do some pretty hairy stuff that looks like it might be fine and just what you want to do, but is really full of nasty lurking traps. The nasty thing that most often looks ok is called "symbolic references" where you use the contents of a variable to access another variable by name. Pretty much always you can replace the referenced variable by a hash element where the variable name is the key to the hash.

    For the task at hand it is convenient to turn the hash into an object that knows how to parse an input file (or whatever) and provides convenient access to the parsed variables. This is a pretty light weight use of OO, but it is likely to provide significant payback if you need to add value to the data, like combining the values of actual variables into pseudo variables which can be accessed just like the actual variables.

    True laziness is hard work
Re^3: trouble with evaluate
by AnomalousMonk (Archbishop) on Apr 09, 2011 at 10:04 UTC
    ... I am none the wiser about why none of the other versions suggested worked ...

    genghis: You might get even more and better help and make more headway if, when you say something like "it didn't work", you would also give the other monks a small, self-contained, runnable example of the "it" in question, along with input and expected output. The very process of putting together such an example can often provide you great enlightenment.