javahead has asked for the wisdom of the Perl Monks concerning the following question:

I have written a module to access our statistics database and graph the output. I was asked to add a feature to allow users to change the style of the graph. Foolishly I thought this would be a quick change but I appear to be missing something

I am using Class::Std and have created the hash structure for the style variable.

my %style : ATTR( :get<style> :set<style>);

In a later subroutine I attempt to call the set method to change the value of style

$self->set_style = $$values{style};

I then get the error message. Can't modify non-lvalue subroutine call at

Since I'm attempting to use the set method to change the value I don't understand why I would get the lvalue error. I have reviewed the Class::Std documentation but haven't been able to find what I'm doing wrong.

Any help would be appreciated

Thank you Javahead

Replies are listed 'Best First'.
Re: Using Class::Std can't seem to set values
by JavaFan (Canon) on Jan 12, 2009 at 15:31 UTC
    You need to call set_style with an argument. Don't use it as an lvalue.
    $self->set_style($$values{style});

      Yes! Thank you. It now works and seems so very obvious now that I know how its done.

      Javahead

      Way too much coffee. But if it weren't for the coffee, I'd have no identifiable personality whatsoever. ~David Letterman