http://www.perlmonks.org?node_id=291552


in reply to Perl Idioms Explained - @ary = $str =~ m/(stuff)/g

One should perhaps add, that the real reason why this magic works is because "=~" binds more thightly than "=", so the regex gets done first and then its results are evaluated in list-context (which is provided by using an array as an L-value).

CountZero

"If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law

Replies are listed 'Best First'.
Re: Re: Perl Idioms Explained - @ary = $str =~ m/(stuff)/g
by tachyon (Chancellor) on Sep 15, 2003 at 14:02 UTC

    To be completely pedantic the reason it 'works' is that they coded it that way! The reason it works without needing parens is as you say.

    The precedence order is why you need to do stuff like this:

    (my $fix_up = $old_str ) =~ s/this/that/g;

    But that is another idiom I guess. This one lets you set declare $fix_up, set it to $old_str, and then modify $fix_up in one line, while leaving $old_str intact for future reference.....

    cheers

    tachyon

    s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print