Hi,
2007/1/22, Ovid <[EMAIL PROTECTED]>:
[snip]
my $captured;
if ( $some_var =~ /^(\w+)\s+/ ) {
$captured = $1;
}
if ( $captured ) { ... }
> I also noticed that $capture here will always contain the first catched
> match ($1).
No, it doesn't in your example. The only way to make that work would be to
use 'list context' and default to matching the '$_' variable:
my ($capture) = /^(\w+)\s+/;
Note that because we're using parentheses on the left side, that forces list
content and because we're using the assignment operator, '=', instead of the
binding operator, '=~', the regular expression matches against '$_' instead
of the left hand side. This is probably a bit more of an advanced usage,
though. You might use it like this:
while (<FH>) {
next if /^#/; # skip comments
my ($capture) = /^(\w+)\s+/; # grab first 'word'
...
}
I also like to point that you still can match $some_var like this:
my ($capture) = $some_var =~ m/^(\w+)\s+/;
Example:
while (my $some_var = <FH>) {
next if $some_var =~ /^#/;
my ($capture) = $some_var = m/^(\w+)\s+/;
...
}
[snip]
HTH!
--
Igor Sutton Lopes <[EMAIL PROTECTED]>
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/