table of contents
Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators(3pm) | User Contributed Perl Documentation | Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators(3pm) |
NAME¶
Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators - Don't mix numeric operators with string operands, or vice-versa.
AFFILIATION¶
This Policy is part of the core Perl::Critic distribution.
DESCRIPTION¶
Using the wrong operator type for a value can obscure coding intent and possibly lead to subtle errors. An example of this is mixing a string equality operator with a numeric value, or vice-versa.
if ($foo == 'bar') {} #not ok if ($foo eq 'bar') {} #ok if ($foo eq 123) {} #not ok if ($foo == 123) {} #ok
CONFIGURATION¶
This Policy is not configurable except for the standard options.
NOTES¶
If warnings are enabled, the Perl interpreter usually warns you about using mismatched operators at run-time. This Policy does essentially the same thing, but at author-time. That way, you can find out about them sooner.
Perl handles the strings 'NaN' and 'inf' as special numbers and
creates an NV struct when compared with a numeric operator. Although not
necessary it is allowed to write code such as:
my $i = 'inf'+0; This pattern helps others understand
that the variable is indeed the Infinite or NaN numbers as Perl interprets
them. Only these two special string numbers are allowed to have the '+'
operator which would otherwise be allowed only for strings.
AUTHOR¶
Peter Guzis <pguzis@cpan.org>
COPYRIGHT¶
Copyright (c) 2006-2022 Peter Guzis. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. The full text of this license can be found in the LICENSE file included with this module.
2023-01-15 | perl v5.36.0 |