You can use Time::Piece to perform the date comparisons. Then it's just a matter of choosing a sensible initial value to compare against. You could use whatever is first in your array but I've chosen to use the epoch here:
use strict;
use warnings;
use Test::More tests => 1;
use Time::Piece;
my @aoh = (
{ 'Name' => 'First Segment',
'Balance' => '183.57',
'days' => 0,
'First Date' => '12/02/2020',
'payment' => 0,
'Activity Date' => '07/05/2020',
'Total Commission' => 0,
},
{ 'Name' => 'Discontinue Segment',
'Balance' => '67.14',
'days' => 3,
'First Date' => '17/02/2020',
'payment' => 0,
'Activity Date' => '27/03/2020',
'Total Commission' => 0.12,
},
{ 'Name' => 'Last Segment',
'Balance' => '12.56',
'days' => 7,
'First Date' => '19/03/2020',
'payment' => 0,
'Activity Date' => '21/04/2020',
'Total Commission' => 0,
}
);
my $maxdate = localtime (0);
for my $hr (@aoh) {
my $date = Time::Piece->strptime ($hr->{'Activity Date'}, '%d/%m/%
+Y');
$maxdate = $date if $date > $maxdate;
}
is $maxdate->dmy ('/'), '07/05/2020';