in reply to Re^2: Regex for matching and appending
in thread Regex for matching and appending

split removes the token it matched, but since you know what it is (here: $$$$ you can simply add it again.

Instead of slurping the whole file and then slipping, you can set the input record separator accordingly:

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @records; { local $/ = '$$$$' . "\n"; while (my $record = <DATA>) { my ($stripped) = split /\nM END\n/, $record, 2; push @records, "$stripped\nM END\n$/"; } } print Dumper \@records; __DATA__ -OECHEM 658567- 1 2 0000 V2000 4 \t 5 8.7 7.655 3 2 \t 55 6 4 5 M END > <compound id> 665765765 > <source> db1 $$$$ -OECHEM 35343- 3 6 0000 V2000 1 \t 7 6 4.6 9 2 \t 45 0 3 5 M END > <compound id> 3546789 > <source> db1 $$$$

Replies are listed 'Best First'.
Re^4: Regex for matching and appending
by joec_ (Scribe) on Dec 10, 2008 at 12:50 UTC
    thank you thats great - it works. Just out of interest, does __DATA__ act as an "in file" file handler? thanks
      Just out of interest, does __DATA__ act as an "in file" file handler? thanks

      Aye, DATA is a file handle that points to where __DATA__ is. See perldata for details.

      Kinda. See perldata and search for "__DATA__".