---
name: "Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators"
section: "3pm"
platform: "linux"
package: "perl-perl-critic"
version: "1.156-3"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators"
---

# Perl::Critic::Policy::ValuesAndExpressions::ProhibitMismatchedOperators(3pm)

Don't mix numeric operators with string operands, or vice-versa.

## 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-2023 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.
