http://www.perlmonks.org?node_id=132610

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Although it should work from a logic standpoint, I don't seem to be able to use the following. Why? c$ = 0 if (c$ < 0); c$ will remain the same as it originally was.

Replies are listed 'Best First'.
Re: Conditionally Changing a Variable
by Rhose (Priest) on Dec 17, 2001 at 23:01 UTC
    Might want to move the $
    $c=0 if ($c < 0);
      Typo. That's what I get for trying to do something quickly before lunch. Shades of old Basic programming shinning through. However, I could not get this to work last night....now it does....at work. Maybe my Perl interpreter on the home machine is broken. I had a similar problem in the past with variables such as: $n = $filenameB if ($n = $filenameA);
        I had a similar problem in the past with variables such as: $n = $filenameB if ($n = $filenameA);

        No wonder you are having problems with this, two errors in the same line :). First of all you are doing an assignment in the if-condition so this should be '==' instead of '='. And second '==' only works for numbers which is probably not what you want ($filename !!). You should use 'eq' instead. $n = $filenameB if ($n eq $filenameA);

        -- Hofmator

Re: Conditionally Changing a Variable
by joealba (Hermit) on Dec 17, 2001 at 23:05 UTC
    Works fine for me, without the typo. Was that a cut-n-paste error, or is that your actual code (with the c$ instead of $c in your conditional)?
    my $c = -5; print "C is now $c\n"; $c = 0 if ($c < 0); print "C is now $c\n";