for my $attr (qw( country customer_number ticket_type )) { my $reader = "get_$attr"; my $clearer = "clear_$attr"; has $attr => ( is => 'rw', reader => $reader, writer => "set_$attr", predicate => "has_$attr", clearer => $clearer, trigger => sub { my ($self) = @_; if (! defined $self->$reader || $self->$reader eq '' ) { $self->$clearer; } } ); }