my %downserver = (); if (...) { my $server = $1; if (!exists $downserver{$server}) { $downserver{$server} = "Restarting $server"; run start server command } } #### my %downserver = (); if (...) { my $server = $1; my $downtime = $n; # some other extracted bit from regex $downserver{$server} = $downtime; } foreach my $server (keys %downserver) { if ($downserver{$server) down after last run) { run start server write to log server upped } }