table of contents
Perl::Critic::Policy::Community::Wantarray(3pm) | User Contributed Perl Documentation | Perl::Critic::Policy::Community::Wantarray(3pm) |
NAME¶
Perl::Critic::Policy::Community::Wantarray - Don't write context-sensitive functions using wantarray
DESCRIPTION¶
Context-sensitive functions, while one way to write functions that DWIM (Do What I Mean), tend to instead lead to unexpected behavior when the function is accidentally used in a different context, especially if the function's behavior changes significantly based on context. This also can lead to vulnerabilities when a function is intended to be used as a scalar, but is used in a list, such as a hash constructor or function parameter list. Instead, functions should be explicitly documented to return either a scalar value or a list, so there is no potential for confusion or vulnerability.
return wantarray ? ('a','b','c') : 3; # not ok return CORE::wantarray ? ('a', 'b', 'c') : 3; # not ok return ('a','b','c'); # ok return 3; # ok sub get_stuff { return wantarray ? @things : \@things; } my $stuff = Stuff->new(stuff => get_stuff()); # oops! function will return a list!
AFFILIATION¶
This policy is part of Perl::Critic::Community.
CONFIGURATION¶
This policy is not configurable except for the standard options.
AUTHOR¶
Dan Book, "dbook@cpan.org"
COPYRIGHT AND LICENSE¶
Copyright 2015, Dan Book.
This library is free software; you may redistribute it and/or modify it under the terms of the Artistic License version 2.0.
SEE ALSO¶
Perl::Critic
2022-07-25 | perl v5.40.0 |