my %msg_uid_hash = (); ... sub daemon { ... $new_msg_cnt = 0; # check current uid list against our last one my @msg_uid_list = $pop->Uidl(); foreach my $uid (@msg_uid_list) { $new_msg_cnt++ if !$msg_uid_hash{$uid}; } # replace the old uid list with the current one %msg_uid_hash = map {$_ => 1} @msg_uid_list; ... }