Jeff Hallock wrote:
> Hi Dave,
> 
> 'after' is called after a method call.
> 
> If you want a block of code to be called every time you set an attribute, you 
> want to use a trigger:
> 
> has 'foo' => (
>       is => 'rw',
>       trigger => sub {
>               # will be called when setting the attribute via 'new' or via 
> the writer method
>               my ( $self, $newval, $oldval ) = @_;
>               ...
>       }
> );

That's great. My code works now. Thanks Jeff.

It does seem counter-intuitive. I'd expect

  $o = Class->new(attribute => 'value');

to have the same effect as

  $o = Class->new(); $o->attribute('value');

Anyway, at least it works and hopefully I'll remember the exception for
next time.

Cheers, Dave

Reply via email to