Howdy, I looked up the behavior of the modifier 'around' in < http://search.cpan.org/~ether/Moose-2.1600/lib/Moose/Manual/MethodModifiers.pod#Around_modifiers>, and the code snipet is:
around 'size' => sub { my $orig = shift; my $self = shift; return $self->$orig() unless @_; my $size = shift; $size = $size / 2 if $self->likes_small_things(); return $self->$orig($size); }; In my code, I have: has 'sequence' => ( is => 'rw' , isa => 'Str' , predicate => 'has_sequence' ); around 'sequence' => sub { my $orig = shift; my $self = shift; my $sequence = uc shift; # Do lots of things with $sequence and then return $self->$orig( $sequence ); } But the attribute is not set. I've tried lots of variations of the last line: $self->$orig( $sequence ); return $orig->( $self, $sequence ); $orig->( $self, $sequence ); return $sequence; With no success, as expected. However, if I do: around 'sequence' => sub { my $orig = shift; my $self = shift; return $self->$orig( @_ ); } The attribute is set and life goes on. Of course, that does not work for me because I need to do a bunch of things to the argument passed to this method. Any ideas about the reasons for the (apparent?) discrepancy in behavior? Best wishes and thanks in advance. -- Marcos S. Barbeitos Departamento de Zoologia - Sala 360 Setor de Ciências Biológicas Universidade Federal do Paraná Caixa Postal 19020 Curitiba, PR 81531-990 Brazil Phone: (55 41) 3361-1634