On 9/7/07, John W. Krahn <[EMAIL PROTECTED]> wrote:
> Aruna Goke wrote:
>
> > print $&, if $f=~m/\S+$/;
>
> perldoc perlre
> [ snip ]
> WARNING: Once Perl sees that you need one of $&, $`, or $' anywhere in
> the
> program, it has to provide them for every pattern match. This may
> ^^^^^^^^
> substantially slow your program. Perl uses the same mechanism to produce
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> $1, $2, etc, so you also pay a price for each pattern that contains
> capturing parentheses. (To avoid this cost while retaining the grouping
> behaviour, use the extended regular expression "(?: ... )" instead.) But
> if you never use $&, $` or $', then patterns without capturing
> parentheses
> will not be penalized. So avoid $&, $`, and $' if you can, but if you
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> can't (and some algorithms really appreciate them), once you've used them
> once, use them at will, because you've already paid the price. As of
> 5.005, $& is not so costly as the other two.
>
>
> Why is there a comma after the variable? Did you forget to include another
> variable?
>
>
I'm actually a little confused about this. I never really thought
about it, but the doc seems to indicate that $1 is a s bad as $& ("the
same mechanism"). But then it implies that capturing parentheses only
affect particular patterns ("pay a price for each pattern...").
So does capturing parentheses anywhere affect the every pattern, like
$&, or just patterns that capture?
Best,
-- jay
--------------------------------------------------
This email and attachment(s): [ ] blogable; [ x ] ask first; [ ]
private and confidential
daggerquill [at] gmail [dot] com
http://www.tuaw.com http://www.downloadsquad.com http://www.engatiki.org
values of β will give rise to dom!