Ed Christian wrote: > I assumed that, $1 would be reset (either undefined or set to null) > once I exited the scope of the while loop my regexp was called in. > Sadly, I was mistaken. :) Below is a test example of code I wrote, > with $1 values differing from those I expected. Do I need to > explicitly set $1..$n to an empty string before every regexp if I'm > to test based on the results of that regexp? > > Thanks! > - Ed > > -=-=-=-=-=- > #!/usr/bin/perl -w > use strict; > use warnings; > > while (<DATA>) { > chomp; > /(\d+)/; > print "\$1: $1\n"; > } > __DATA__ > 1 > 2 > a > 3 > > > Expected results: > $1: 1 > $1: 2 > $1: # <--- was expecting an empty string > $1: 3
You've already gotten the answer on how $1 works. But, if you want to get undef on a failed match, you can use the match in a list context: my ($number) = /(\d+)/; Now $number will contain the matched string, or undef if there was no match. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]