Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

How can I search between two words in a file using perl e.g. a file contains some paragraphs and in each paragraph there are some words between "FROM" and "WHERE". My query is how to search between these two words and store the data.

Edit by BazB: ucfirst title.

Replies are listed 'Best First'.
Re: Search between two words in a file
by matija (Priest) on Jun 14, 2004 at 10:32 UTC
    One way would be to read each paragraph into a single variable (either by setting $/ or by appending line to the variable until you get to the end of the paragraph), then simply match using something like $paragraph=~/FROM(something wild)WHERE/;

      To the Original Poster:
      The manuals   perldoc perlrequick   and   perldoc perlre   describe it quite well.

      You will understand matija's solution after a quick glance into one of them and be able to use it.

      $paragraph =~ m/FROM(.*?)WHERE/; # now everything in between is in   $1
      my $inbetween = $1;

      If that still doesn't make much sense, everything else can be found in   perldoc perlintro.

      Cheers, Sören

      can you give me the command used for appending line to a variable until end of line. and after matching the data using "$paragraph=~/FROM(something wild)WHERE/;", how can I print that variable?
    A reply falls below the community's threshold of quality. You may see it by logging in.
Re: Search between two words in a file
by Not_a_Number (Prior) on Jun 14, 2004 at 10:53 UTC

    1) What have you tried?

    2) Have you considered the possibility of embedded start/end strings? (eg 'rabbit FROM foo FROM bar WHERE baz WHERE')