in reply to invocation mode - how discover?
I'm not sure what you want. Perhaps wantarray?
It it returns undef, the sub was called as a subroutine; and
if it returns a defined value, the the sub was called as a function.
(Furthermore,
if it returns a true value, the caller is ready to accept a list; and
if it returns a false value, the caller is not ready to accept a list.)
That said, I think it's generally a bad idea for a Perl sub to use wantarray to determine whether it was called as a subroutine or as a function. Checking the arguments is usually better. For example,
sub getter_setter { my $self = shift; if (@_) { $self->{value} = $_[0]; } return $self->{value}; }
|
|---|