Messages per Month
|Subject:||Re: Perl question|
|From:||Christopher Rued (c.r...@xsb.com)|
|Date:||Oct 2, 2000 2:09:28 pm|
Andresen,Jason R. writes:
BTW, your RE should have a ``*'' as well:
Maybe, it depends on exactly what he was trying to get.
The first 3 character match where x and y are the first and third character respectivly, then x.y is exactly what you want. The smallest set of characters that have x and y as boundry values? Then your x.*?y is correct. The smallest set of characters that have x and y as boundries and have at least one character in between them? x.+?y is needed.
The RE I used was precisely what I wanted: x.y (an `x' followed by exactly one character followed by a `y').
When I run the following:
#!/usr/bin/perl $a = "xayxbyxcyxdy"; @s = $a =~ /x.y/; print "\@s is @s\n";
@s is 1
So, I seem to be getting the truth value rather than the first match in the string. If, however, I wrap the entire RE in a parentheses (make it a subexpression) like so:
#!/usr/bin/perl $a = "xayxbyxcyxdy"; @s = $a =~ /(x.y)/; print "\@s is @s\n";
I get the results I wanted to begin with:
@s is xay
(I discovered this shortly after I sent the first message about this).
What confuses me is that if I specify the global option, I do not need to use a subexpression. For example, if I run the following code:
#!/usr/bin/perl $a = "xayxbyxcyxdy"; @s = $a =~ /x.y/g; print "\@s is @s\n";
@s is xay xby xcy xdy
So, this leaves me with a couple of questions, the main one being: Why the different treatment for single matches and global matches?
and a less important one: Why is there no way to have the first match assigned to a scalar, since we can be sure that there will be at most one match returned?
If anyone can explain this, and/or answer the questions posed above, I'd appreciate it.
To Unsubscribe: send mail to majo...@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message