in reply to RegEx pattern

You can also write a small program to do the job:
my $elementHash = { MSGTEXT1 => 'CDATA[Starting SITUATION1 <311446961, +2559575967> for K01.K01CSYSTE5', MSGTEXT2 => 'CDATA[Starting Enterprise situation S +ITUATION1 <311439572,1066403668> for K01.K01CSYSTE5.', }; foreach my $key ( keys %{ $elementHash } ) { my @tmp = parse_str( $elementHash->{$key} ); print Dumper( \@tmp ); } exit; sub parse_str { my $str = shift; my @items = split ' ', $str; my @tmp = split '\[', $items[0]; my $size = $#items; my $param2 = ( $size > 4 ) ? $items[3] : $items[1]; ( $tmp[1], $param2, $items[ $size ] ); }
Dumped data:
$VAR1 = [ 'Starting', 'SITUATION1', 'K01.K01CSYSTE5' ]; $VAR1 = [ 'Starting', 'SITUATION1', 'K01.K01CSYSTE5.' ];