in reply to Combining multiple lines into one line

It looks like your data is delimited by double returns. However, your example breaks that pattern for the first record.

Therefore the below solution assumes that paragraph mode wouldn't work:

my $data = do {local $/; <DATA>}; $data =~ s/\n(?=\=\?|\+)//g; print $data; __DATA__ Xmodels node1 node2 D G S S Al=1 X=2 V=2e-6 =? bitval=1 model=bitval20 color=30 =? coordinates x-val=20 y-val=30 targetDestroyed=yes =? missionstatus=completed perimeterSecured=yes =? repeatMission=false newMission=yes =? ordinance=34!44 countrycode=red Xmodels node1020 node4300 D G S S Al=12 X=222 V=23e-6 =? bitval=0101 model=bitval28 color=101AFFFB =? coordinates x-val=2370 y-val=390 targetDestroyed=no =? missionstatus=abandoned perimeterSecured=indeterminate =? repeatMission=false newMission=InexploreStage =? ordinance=NULL countrycode=purple Mmodel 300 90 axis-x axis-y 10110001 + firemethod=automatic burstmode=yes + modeltype=gatlin revolve=true + mmodellinespeed=3000fps targacquire=manual manned=optional Mmodel 330 190 axis-x axis-y 1A11FFF1 + firemethod=automatic burstmode=yes + modeltype=FOEAWE revolve=true + mmodellinespeed=3000fps targacquire=automatic + manned=optional + roundspersecond=13000/s