Полагаю, это не кодирование (как, скажем, ISO 8859-1 против UTF-8), а окончания строк (CR, LF против LF).
Если бы вы использовали chomp и напечатали "\ n", вы, вероятно, конвертировали бы окончания строк в родную платформу.
Я думаю, что ваш сценарий может быть лучше написан примерно так ( Не проверено ):
#!/usr/bin/perl
use strict;
use warnings;
open ($old, '<', 'eventlog.txt') or die 'Could not open eventlog.txt';
open ($new, '>', 'eventlog_nodatetime.txt')
or die 'Could not open eventlog.nodatetime.txt');
$\ = "\n";
while (<$old>) {
chomp;
s/^(\S+\s+\S+\s+)\S+\s+(.*)/$1$2/;
print $new;
}
close $old;
close $new;
Или
perl -pe 's/^(\S+\s+\S+\s+)\S+\s+(.*)/$1$2/' eventlog.txt >eventlog.nodatetime.txt
Или использовать сплайс на сплите?
Или ...