Я не уверен, что правильно понял вашу проблему, но в любом случае мое решение будет выглядеть следующим образом
use strict;
use warnings;
use Data::Dumper;
my $debug = 0;
my @data;
while( <DATA> ) {
if( $_ =~ /ExitAddress\s+(\S+)\s+(\S+)\s+(\S+)/ ) {
my($ip,$date,$time) = ($1,$2,$3);
printf "IP: %15s DATE: %10s TIME: %8s\n",
$ip, $date, $time if $debug;
push @data , [$ip,$date,$time];
}
}
print Dumper(\@data) if $debug;
foreach my $e (@data) {
printf "%15s %10s %8s\n", @{$e};
}
__DATA__
ExitNode 0011BD2485AD45D984EC4159C88FC066E5E3300E
Published 2019-11-09 02:20:53
LastStatus 2019-11-09 03:02:54
ExitAddress 162.247.74.201 2019-11-09 03:03:21
ExitNode 0011BD2485AD45D984EC4159C87FC066E5E6F01A
Published 2019-11-09 03:40:12
LastStatus 2019-11-09 04:7:48
ExitAddress 162.247.74.167 2019-11-09 04:08:03