in reply to %20 results from reading info from a .dat file

It looks like you are dealing with URL-encoded data. The URI::Escape module can deal with this:

use URI::Escape; # ... $data = uri_unescape($data);

This should change %20 (in the $data variable) into spaces (assuming you are running on an ASCII-compatible platform), and other %XX sequences into the appropriate character. If you really don't want to use a module you can use the substitution: $data =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg which should be equivilent.