Hello CropCircle, and welcome to the Monastery!
This line:
my $var2 = $var =~ /red|green|blue/;
looks a bit strange to me. If $var contains 'xredy', for example, the match will succeed but $var2 will be set to 1 (“true”):
22:35 >perl -wE "my $var = 'xredy'; my $var2 = $var =~ /red|green|blue +/; say qq[|$var2|];" |1| 22:35 >
Is that really what you want? To set $var2 to the string that was matched, you need something like this:
22:25 >perl -wE "my $var = 'xredy'; my ($var2) = $var =~ /(red|green|b +lue)/; say qq[|$var2|];" |red| 22:30 >
The parentheses within the regex are for capturing, and the parentheses around $var put the match into list context. See perlretut#Extracting-matches. Or you can get the capture in $1:
22:38 >perl -wE "my $var = 'xredy'; $var =~ /(red|green|blue)/; my $va +r2 = $1; say qq[|$var2|];" |red| 22:38 >
Hope that helps,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
In reply to Re: Use of uninitialized value $var in pattern match (m//)
by Athanasius
in thread Use of uninitialized value $var in pattern match (m//)
by CropCircle
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |