in reply to Re: Re: Re: pattern matching on a single line
in thread How do I store all matches from a single line?

Sadly your example fails to produce the desired result :-( Here are a few different ways to write it, all do the same as Randal's example, which we start with.

tachyon

@lines = <DATA>; @result = map /<.*?>/g, @lines; result(1); for (@lines) { @result = /<(.*?)>/g; } result(2); for (@lines){ @match = /<(.*?)>/g; push @result, @match; } result(3); for (@lines){ push @result,$1 while /<(.*?)>/g; } result(4); @result = map{/<.*?>/g}@lines; result(5); sub result { print"\nResults",pop,"\n"; print "$_\n" for @result; @result = (); } __DATA__ aa<aa@aa.com>bb<bb@bb.com>cc<cc@cc.com> dd<dd@dd.dd>ee<ee@ee.com>ff<ff@ff.com>

Replies are listed 'Best First'.
Re: Re: Re: Re: Re: pattern matching on a single line
by merlyn (Sage) on Jun 06, 2001 at 00:33 UTC
    Uh, hello? I just ran this code:
    @lines = <DATA>; @result = map /<.*?>/g, @lines; result(1); ### rest deleted ### sub result { print"\nResults",pop,"\n"; print "$_\n" for @result; @result = (); } __DATA__ aa<aa@aa.com>bb<bb@bb.com>cc<cc@cc.com> dd<dd@dd.dd>ee<ee@ee.com>ff<ff@ff.com>
    and it produced this result, which appears perfectly fine:
    Results1 <aa@aa.com> <bb@bb.com> <cc@cc.com> <dd@dd.dd> <ee@ee.com> <ff@ff.com> ### rest deleted
    What part of Sadly your example fails to produce the desired result :-( am I failing to understand?

    -- Randal L. Schwartz, Perl hacker