in reply to File read and re-ordering

You're not being very clear, but it sounds like you want to do something like this:

while (<INPUT>) { # look for start of record next unless /START_RECORD_MARKER/; # output the next 17 lines into a file my @seventeen; push @seventeen, scalar <INPUT> for 1 .. 17; # reformat the contents of @seventeen in some way open OUTPUT, '>', 'first_part_of_record.txt' or die $!; print OUTPUT @seventeen; close OUTPUT; # output the rest of the record into another file my @rest; while (<INPUT>) { last if /END_RECORD_MARKER/; push @rest, $_; } # reformat @rest in some way open OUTPUT, '>', 'next_part_of_record.txt' or die $!; print OUTPUT @rest; close OUTPUT; }

This overwrites the two files each time round the loop, so you'll need to add some extra processing to create unique names for them. And I'm not sure what you mean about "assignments". I haven't used any variable assignments at all - so I'm probably not doing what you want.

Update: Changed the logic a bit.

--
<http://dave.org.uk>

"The first rule of Perl club is you do not talk about Perl club."
-- Chip Salzenberg