$str = '[ToNode=cup-subscriber][Reason=Critical service is down][FromNode=cup-publisher][AppID=Cisco UP Server Recovery Manager]'; @pieces = split/(?<=\])(?=\[)/,$str; print "$_\n" foreach(@pieces);