Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Same number, different string [Re: my least favorite perl feature]

by bronto (Priest)
on Feb 06, 2003 at 15:47 UTC ( #233160=note: print w/replies, xml ) Need Help??


in reply to my least favorite perl feature

Actually, your problem doesn't have a simple solution. Two equal strings surely have the same numerical values, but what about two different strings? According to perlnumber these different strings all have the same numerical value: 1, 0x1, 01, 0b00000001

So, when $a eq $b says they are different, what would you do? I'll compare with == then! It's a simple or!. Gotcha! I am sorry, it's wrong: try to see what happens with ($a,$b) = qw(x y)...

What then? Well, when they are stringwise different, you have to choose again if you want to make a numerical comparison or not. You could check (by means of a regexp, for example) if $a and $b look like a number. If they don't, they are different and that's the end of the game; if they both are numbers you can (finally) proceed with ==

I had liked to find a better solution, but I think there isn't any.

Ciao!
--bronto


The very nature of Perl to be like natural language--inconsistant and full of dwim and special cases--makes it impossible to know it all without simply memorizing the documentation (which is not complete or totally correct anyway).
--John M. Dlugosz

Replies are listed 'Best First'.
Re: Same number, different string [Re: my least favorite perl feature]
by adrianh (Chancellor) on Feb 06, 2003 at 16:18 UTC

    I don't think a simple solution was being asked for - just a solution ;-)

    Equality is a bit of a bugger since it can mean so many different things. Perl gives us string and number equality - but their are others. For example Common Lisp provides eq, eql, equal, =, string-equal and char-equal - which all do slightly different things.

    I miss "the same object" equals quite a bit in my coding (eq in Common Lisp). waxmop wants something like Common Lisp's equal.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://233160]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (3)
As of 2021-03-04 04:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favorite kind of desktop background is:











    Results (98 votes). Check out past polls.

    Notices?