Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Re: pushing individual rows of return (DBI) into seperate arrays

by peppiv (Curate)
on Aug 28, 2003 at 19:20 UTC ( #287494=note: print w/replies, xml ) Need Help??

in reply to Re: pushing individual rows of return (DBI) into seperate arrays
in thread pushing individual rows of return (DBI) into seperate arrays

Mr. Muskrat Thanks for the fresh pair of eyes. Can't believe I missed something so simple. Too much time staring at code.

Thank you sir


  • Comment on Re: Re: pushing individual rows of return (DBI) into seperate arrays

Replies are listed 'Best First'.
Re: Re: Re: pushing individual rows of return (DBI) into seperate arrays
by thinker (Parson) on Aug 28, 2003 at 19:43 UTC

    Hi peppiv,

    Like everyone else, at some time or other, I have been bitten by this. I have noticed lately around the monastery some people using the idiom

    if ( 1 == $row ){ ... }

    the reason being that if ( 1 = $row ){ ... } would yield an error. ( Can't modify constant item in scalar assignment )

    My first impression was that the construct was ugly, and counter-intuitive, but I feel my opinion changing. I haven't included it in any code, yet, but who knows what the future will bring? :-)

    Does anyone have any thoughts on whether the use of this construct should be encouraged?


      I'm a big fan of the if ( 2 == $whatever ) {...} construct myself, and try to use it whenever possible to avoid the problem you describe. After a while you get used to it and it looks normal.
      Maybe I haven't been reading closely enough, but I've never seen that before. I must say that I find that counter-intuitive, as you did initially. I don't see the need for additional code that exists only to validate earlier code where you want to guard against making a coding mistake - does that make sense? Just bite the bullet and learn that "==" is to compare numbers. peppiv did the right thing posting his question here - someone will see the error, even if you can't ;-)
        It's not additional code. It's using
        if (1 == $x) { ... }
        instead of
        if ($x == 1) { ... }
        if (1 = $x) { ... }
        is a syntax error, but
        if ($x = 1) { ... }
        is not.
        It's easy enough to learn that "==" is to compare numbers, "eq" is to compare strings, and "=" is for assignment in Perl, but peppiv is using Perl and SQL at the same time, and in SQL "=" is for all exact comparison and ":=" is for assignment. I (fortunately) tend to confuse the two to the detriment of my SQL, which almost always causes a syntax error instead of a logical error. Syntax errors are easier to fix than logical ones - I like "1 == $x" style for that reason (although I never remember to do it).

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (4)
As of 2021-05-14 19:13 GMT
Find Nodes?
    Voting Booth?
    Perl 7 will be out ...

    Results (150 votes). Check out past polls.