in reply to how to search a pattern occured more than once in line

You can use the /g modifier, and replace the if by a while (untested):
for (@Read){ while (m/Number-(\d{4}-\d{4})/g){ print "$1\n"; print WR1 "$1\n"; } }

By putting the parenthesis only around these parts of the regex that you want to capture, you avoid the substr alltogether.

\d{4} is short for \d\d\d\d