Well, considering that 'undef', is, uhm, an "unintialised value", and that you use it as an argument to 'eq', I am not at all surprised at the warning.

Now, you could turn off warnings for this case; clearly you intended to use an undefined value, so there's no point for Perl to warn you.

However, comparing the 'undef' can be the wrong thing. In string context (and that's what the operands of 'eq' will be in), undef becomes the empty string. So, if $id can be an empty string, you might get the wrong thing.

You can solve both issues by using

if (!defined $id)
as your first test.

In reply to Re: String equality and undef by JavaFan
in thread String equality and undef by joec_

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.