I'm a bit confused by your post. Do you already know what the repeating block looks like? Or are you trying to detect repeat blocks? And if you are looking for repeat blocks, do you know the end points? Are they always, "Experiment" and "Reagent Lots" ??

# 1. open the file open FILEHANDLE, $filename or die $!; # 2. look for my first repeated block while( <FILEHANDLE> ) { if( /(some-regex-for-the-repeat-block)/ ) { # 3. save this first repeated block to a variable (which is best?) # 4. open the first output file open TEMP, "> $outfile" or die $!; # 5. write the code to this file and close it print TEMP $1, $/; close TEMP or die $!; # 6. repeat to end of file }
Another idea might be to undef $/ so that you can read the infile as a scalar and apply your regex to the whole thing:
{ # note the {} brackets. This concerns the scope of the next line. local $/; # sets $/ = undef for this block only. open FH, $infile or die $!; $_ = <FH>; # Reads the entire file into memory. close FH or die $!; @_ = m/(some-regex-for-the-block)/gm; } # now @_ contains an array of matches for the regex. # write each one to a different file: my $filenum = 0; for( @_ ) { ++$filenum; open FH, ">MATCH$filenum" or die "Failed to open MATCH$filenum, $! +"; print FH $_, $/; close FH or die $!; }

In reply to Re: matching and writing multiple line blocks by Adam
in thread matching and writing multiple line blocks by MadraghRua

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.