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
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.
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)
.
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)
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
}
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.
To check for an empty string you could also do something as follows
if (!defined $val || $val eq '')
{
# empty
}
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.