Syntactic Confectionery Delight PerlMonks

### 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??

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

peppiv

Comment on Re: Re: pushing individual rows of return (DBI) into seperate arrays
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?

thinker

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) { ... }
```if (\$x == 1) { ... }
because
```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).
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.

Create A New User
Node Status?
node history
Node Type: note [id://287494]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (13)
As of 2013-05-20 20:21 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?