in reply to Re: Re: Matching over multiple lines in a scalar
in thread Matching over multiple lines in a scalar

Take it one step further still and do away with the temporary scalar. This works.

my %lines = do{local$/; <DATA> = ~m/(?:^|\n)(\d+)\:(.+?)(?=(?:\n\d)|$) +/gs };

Now I'll wait for sauoq to reduce the regex to 3 chars and a twiddle and we've got a golf solution.:^)


Nah! Your thinking of Simon Templar, originally played by Roger Moore and later by Ian Ogilvy

Replies are listed 'Best First'.
4Re: Matching over multiple lines in a scalar
by thpfft (Chaplain) on Oct 28, 2002 at 00:03 UTC

    after a tactful /msg from chromatic, i can confirm that this works too, provided the data are very tidy indeed.

    (i wish someone would redefine data as the mass noun it surely is, then I could stop pedantically pluralising around it.)

    my (undef, %lines) = split(/(\d+): /, join('', <DATA>));

    ugly, fragile and unwise, but you know, short.