http://qs1969.pair.com?node_id=324322


in reply to Storing Lines before and After pattern

This sooo looks like homework. Oh, well.

You'll probably be interested in the s modifier for regex matching. (See perlre for more detail.):

#!/usr/bin/perl use strict; use warnings; my $poem; { local $/ = undef; $poem = <DATA>; } my( $before, $after) = $poem =~ m/(.*)\bDOG\b(.*)/s; print "Text before:\n$before\n\n"; print "Text after:\n$after\n\n"; __DATA__ A Beautiful Poem Mary had a little lamb, little lamb, little lamb Mary had a DOG but everywhere that mary went the lamb was sure to go even though it did not like the dog very much. # Output Text before: A Beautiful Poem Mary had a little lamb, little lamb, little lamb Mary had a Text after: but everywhere that mary went the lamb was sure to go even though it did not like the dog very much.

--
Allolex

Replies are listed 'Best First'.
Re^2: Storing Lines before and After pattern
by Coruscate (Sexton) on Jan 27, 2004 at 05:26 UTC

    If you enjoy saving a few keystrokes here and there (and who doesn't?), you can replace

    my $poem; { local $/ = undef; $poem = <DATA>; }

    with this:

    my $poem = do { local $/; <DATA> };

    IMHO, it's not only shorter, it's also more readable, since you are assigning the entore operation to the variable. ;)