in reply to Loops and variable usage

First, you have bad syntax in your elsif conditional, a single = which assigns $a the value of 2. It should be ==.

I reformatted your code to be more readable, fixed the ==, added 'my' to the subroutine vars, removed the 'v' filehandle so I could just print to the screen, seems to work for me based on your logic. Here is the code (always 'use strict;'!).

#!/usr/bin/perl -w use strict; $| = 1; my $a = 1; my $b = 1; my $c = 1; print "Passing in \$a: $a, \$b: $b, \$c: $c: expect p 1 1\n"; ddd($a,$b,$c); $a = 2; $b = 2; $c = 2; print "Passing in \$a: $a, \$b: $b, \$c: $c: expect pp 2 2\n"; ddd($a,$b,$c); $a = 3; $b = 3; $c = 3; print "Passing in \$a: $a, \$b: $b, \$c: $c: expect 3 w 3\n"; ddd($a,$b,$c); sub ddd { my $a = $_[0]; my $b = $_[1]; my $c = $_[2]; if ($a == '1') { $a = 'p'; } elsif ($a == '2') { $a = 'pp'; } if ($b == '3') { $b = 'w' } print " < $a > < $b > < $c > \n"; }
and here is the output:
#> ./test-subroutine.pl Passing in $a: 1, $b: 1, $c: 1: expect p 1 1 < p > < 1 > < 1 > Passing in $a: 2, $b: 2, $c: 2: expect pp 2 2 < pp > < 2 > < 2 > Passing in $a: 3, $b: 3, $c: 3: expect 3 w 3 < 3 > < w > < 3 > #>


"Peace, love, and Perl...well, okay, mostly just Perl!" --me

Apprentice

Replies are listed 'Best First'.
Re^2: Loops and variable usage
by Anonymous Monk on Mar 23, 2012 at 18:57 UTC
    This script was just an example not proper code, but thanks very much for all help. I just figured out that I used '==' to compare strings...

      Actually, you use 'eq' for strings and '==' for numbers.

      ...roboticus

      When your only tool is a hammer, all problems look like your thumb.