in reply to splitting a string on pre-defined tags
Usually it's easier to match what you want to keep instead of splitting on the stuff you don't want:
#!perl -w use strict; use Data::Dumper; my $string=q{C*ID1*Mac*C release for EA's D*ID1*Spore1 game*D; D*ID1*S +pore 1*D is better than D*ID2*Spore 2 game*D.}; my @sections; while( $string =~ m!(([CD])\*(.*?)\*\2)!g) { push @sections, $1; }; print Dumper \@sections; __END__ $VAR1 = [ 'C*ID1*Mac*C', 'D*ID1*Spore1 game*D', 'D*ID1*Spore 1*D', 'D*ID2*Spore 2 game*D' ];
The regular expression looks for a C or D followed by a * and then slowly goes forward until it finds a * followed by whatever it matched at the start.
|
|---|