What is the proper way to check if a string is empty in Perl?

后端 未结 6 1847
日久生厌
日久生厌 2020-12-25 09:18

I\'ve just been using this code to check if a string is empty:

if ($str == \"\")
{
  // ...
}

And also the same with the not equals operato

相关标签:
6条回答
  • 2020-12-25 09:42
    1. Due to the way that strings are stored in Perl, getting the length of a string is optimized.
      if (length $str) is a good way of checking that a string is non-empty.

    2. If you're in a situation where you haven't already guarded against undef, then the catch-all for "non-empty" that won't warn is if (defined $str and length $str).

    0 讨论(0)
  • 2020-12-25 09:43

    The very concept of a "proper" way to do anything, apart from using CPAN, is non existent in Perl.

    Anyways those are numeric operators, you should use

    if($foo eq "")
    

    or

    if(length($foo) == 0)
    
    0 讨论(0)
  • 2020-12-25 09:45

    You probably want to use "eq" instead of "==". If you worry about some edge cases you may also want to check for undefined:

    if (not defined $str) {
    
    # this variable is undefined
    
    }
    
    0 讨论(0)
  • 2020-12-25 09:50

    For string comparisons in Perl, use eq or ne:

    if ($str eq "")
    {
      // ...
    }
    

    The == and != operators are numeric comparison operators. They will attempt to convert both operands to integers before comparing them.

    See the perlop man page for more information.

    0 讨论(0)
  • 2020-12-25 09:54

    To check for an empty string you could also do something as follows

    if (!defined $val || $val eq '')
    {
        # empty
    }
    
    0 讨论(0)
  • 2020-12-25 09:55

    As already mentioned by several people, eq is the right operator here.

    If you use warnings; in your script, you'll get warnings about this (and many other useful things); I'd recommend use strict; as well.

    0 讨论(0)
提交回复
热议问题