Camilo Gonzalez wrote at Tue, 28 May 2002 19:45:53 +0200:

> Gurus,
>  
> I've been having this problem in various permutations throughout my Perl life. For 
>this particular
> function, I set $confirm_counter to 1. Then I use a foreach loop to send email to 
>multiple
> recipients. Within the foreach loop, I increment $confirm_counter by using 
>$confirm_counter++. I
> then use the value of $confirm_counter as a test for an if conditional. If the 
>counter is one,
> then a confirmation email will be sent to the person who submitted the form. If not, 
>the
> confirmation email will be skipped. This is to prevent any user from receiving more 
>than one
> confirmation email. However, it seems that $confirm_counter is not being incremented 
>and the user
> will receive as many as 7 email confirmations. Any ideas? I'm enclosing the code in 
>question
> below.
>  
>   ....
>   if ( $confirm_counter = "1"){
                         ^^^

That's the problem. 
You wanted a comparison, but you did an assignment.
Just use "==".
  
>     if ( $send_confirmation_mail ) {
>       open_sendmail_pipe(\*CMAIL, $mailprog);
>       print CMAIL $xheader, "To:
> $email$realname\n$confirmation_text$confirm_counter";
>       close CMAIL;
>     }
>     }
>     ++$confirm_counter;
>   ...  

When the problem occurs often,
there's a trick to avoid:

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

When you write a '=' instead of '==' the interpreter is complaining 
before the script starts :-)

Greetings,
Janek

PS: I'd bet, it's the most done beginner's mistake.
Is there anybody who has already written a program to dedect it ?
(Like lint)

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to