Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

comment on

( #3333=superdoc: print w/replies, xml ) Need Help??
Since I was a C programmer for so long before Perl, I occasionally mistype my code and put == when I ought to use eq. When it does happen, I get a message like Argument "" isn't numeric in ... because I use warnings;, and then it's easy enough to fix. That said, and compiler dependencies aside, there is a purely practical argument for having two equivalence operators: they do different things.

To understand that, consider the following toy program:

#!/usr/bin/perl -w use strict; my $aval = "0"; # string number zero my $bval = "0.0"; # also a string zero, spelled differently for my $compare ( $aval, $bval ) { print "Comparing '$compare' to 0...\n"; print "string match\n" if ( $compare eq 0 ); print "number match\n" if ( $compare == 0 ); }
The string "0.0" is different from the string "0", but it's the same numerically. Yes, we could get the same thing with an overloaded equivalence operator and strong typing on all variables -- but to be honest, I find all that extra code to be a nuisance. Also, the dual-purpose nature of scalars allows us to return "0 but true" from a subroutine and let the caller use it as a boolean pass/fail or numeric count value (see Re: True or False? A Quick Reference Guide for details).

In reply to Re: irritation makes perls by papidave
in thread irritation makes perls by xyzzy

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



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (2)
As of 2021-09-22 18:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?