use strict; use warnings; my $data_in = 'bbbcccc'; my $data_out; while ($data_in =~ /(.+?)<\/a>(.+?)<\/b><\/container>(<\?query\?>)?/ig) { print "1=$1\n"; print "2=$2\n"; print "3=$3\n"; $data_out = "$2, $1$3 "; } __END__ 1=bbb 2=cccc 3= #### while ($data_in =~ m{(.+?)(.+?)(<\?query\?>)?}ig) {