Ваша программа изобилует ошибками внедрения кода.
Использование локального времени для меток времени без включения информации о часовом поясе (например, смещение от UTC) проблематично в местах с переходом на летнее время.
Вотрешение, которое решает эти проблемы:
use POSIX qw( strftime );
use String::ShellQuote qw( shell_quote );
open(my $fh_log, '>>', $test)
or die $!;
open(my $pipe, '|-', "ping", "-w", "300", "-i", $interval, "--", $host)
or die $!;
while (<$pipe>) {
my $ts = strftime("%Y-%m-%dT%H:%M:%S%z", localtime);
print($fh_log "[$ts] $_");
}