Where does $linefinal get a value? Where is your use strict; (which would have shown the problem)?
Why do you have a __DATA__ section, but open and manipulate a couple of files? It seems that you might have been trying to come up with a sample like this:
use strict;
use warnings;
while (<DATA>) {
s/%s/(Info: %s)/g;
print;
}
__DATA__
6101;CON_RST_OCC;3;3;0;0;Controller reset occured %s; Zurücksetzung de
+s Controllers ist erfolgt %s
6102;DEG_UNIT;3;3;0;0;Degraded unit %s;Unit wurde runtergestuft %s
<p>
which prints:
6101;CON_RST_OCC;3;3;0;0;Controller reset occured (Info: %s); Zur³ckse
+tzung des Controllers ist erfolgt (Info: %s)
6102;DEG_UNIT;3;3;0;0;Degraded unit (Info: %s);Unit wurde runtergestuf
+t (Info: %s)
DWIM is Perl's answer to Gödel