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


by Seumas (Curate)
on Jun 20, 2003 at 22:34 UTC ( #267734=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Re: "Useless use of private variable in void context"
in thread "Useless use of private variable in void context"

Okay, I should have been able to start deducing the comma thing by that point, too. I'm not sure why I was so oblivious to it. I did find the culprit however. I had nailed the problem down to 20 lines of code and your comment about a comma (makes absolute sense) lead me to the precise line that was glitching.

I'm embarrassed to admit this, but the following is the problem that was tripping me up. Note that the code has behaved exactly as wanted and expected for over a year with this line in it - go figure!

Problematic line:

if (defined($duplicate_email_address), defined($matched_uid))

Obvious to anyone with a brain and a set of eyes (except myself apparently), the problem with the above line is that there is a comma where the && operand should be.

All I can offer in my defense is that I never suspected a problem like that because I'd have expected it to cause a syntax error or prevent compiling.

I can also now recall the exact step that lead me to this problem over a year ago when I wrote this new batch of code. I had copied the contents of something like my ($foo, $bar, $blah) = $sth->fetchrow_array; and then used that in a conditional and never went back to modify the syntax.

This was the last thing I was investigating. Every time I went back to check this code and see if I could find the cause of that error, I was looking for things more like a variable that was being defined but never used or something. Gah! So frustrating!

On a positive side, I rarely make the same mistake twice and I learned a thing or two from this thread. Thanks again, monks.

Replies are listed 'Best First'.
Re: Solution.
by BrowserUk (Patriarch) on Jun 20, 2003 at 22:50 UTC

    ++ for letting us know the resolution.

    On the comma thing. I have a habit of starting out with a lines like

    $i++ if $some_condition; #or push @a, 'fred' while @a < 10;

    And then realising that I need to do something else in the if or while and so instead of restructuring the line to the

    if(..) { ....; ....; } or

    while( ... ) { ...; ....; }

    I do

    $j-- , $i++ if $some_condition; #or print scalar @a , push @a, 'fred' while @a < 10;

    This is usually a temporary step while I try something out or when debugging, but I've been bitten enough times by the "comma thing" to recognise the symtoms.

    Examine what is said, not who speaks.
    "Efficiency is intelligent laziness." -David Dunham
    "When I'm working on a problem, I never think about beauty. I think only how to solve the problem. But when I have finished, if the solution is not beautiful, I know it is wrong." -Richard Buckminster Fuller

Log In?

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

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (3)
As of 2023-12-02 06:18 GMT
Find Nodes?
    Voting Booth?
    What's your preferred 'use VERSION' for new CPAN modules in 2023?

    Results (13 votes). Check out past polls.