use v5.40; # strict, warnings, many features use Moo; # lightweight object system use Log::Any '$log'; # my favorite logging system has field1 => ( is => 'rw', required => 1 ); sub method1($self, $z=undef) { try { $self->field1($z) if defined $z; $self->field2($z // 5); } catch ($e) { say $e; $log->error($e); } }