Maybe it would be a good exercise to go through the code you've posted and to explain what every line is supposed to do. Especially the intention of these two parts is important:
What does @data contain? Is data a good name for that?
$text =~ s/&/&/g;
- Why are you iterating over @data?
- What does change in the loop code for each iteration?
- How does the code in the loop reflect the rules you set up for when to replace & with &?
What is the output you see, and what is the output you expect. How does the output you expect relate to the rules you've set up for when to replace &?
In answering these questions to yourself, you will find the steps you need to take to modify your program from a collection of lines into something that does what you want.