Depending on when you want to set
$self->{_not_exposed_reason},
sub not_exposed_reason {
my ($self, $not_exposed_reason) = @_;
return
$self->{_not_exposed_reason} = defined($not_exposed_reason)
? $not_exposed_reason
: "No exposed reason";
}
or
sub not_exposed_reason {
my ($self, $not_exposed_reason) = @_;
if (defined($not_exposed_reason)) {
return $self->{_not_exposed_reason} = $not_exposed_reason;
} else {
return "No exposed reason";
}
}
Note that
defined(X) ? X : Y
can be written as
X // Y
since Perl 5.10.