The defined Function

One operator that can return undef is the line-input operator, <STDIN>. Normally, it returns a line of text. But if there is no more input, such as at end-of-file, it will return undef to signal this.[62] To tell if a value is undef and not the empty string, use the defined function, which returns false for undef and true for everything else:

    $madonna = <STDIN>;
    if ( defined($madonna) ) {
      print "The input was $madonna";
    } else {
      print "No input available!\n";
    }

If you’d like to make your own undef values, you can use the obscurely named undef operator:

    $madonna = undef; # As if it had never been touched

[62] Normally, there’s no “end-of-file” when the input comes from the keyboard, but the input may have been redirected to come from a file. Or the user may have pressed the key that the system recognizes to indicate end-of-file.

Get Learning Perl, Fourth Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.