diff --git a/userprefs.cgi b/userprefs.cgi
index a5590e4eb43dd67c1b0b4c8abd24470f1de8f47d..df2255ce42c31431798dfc093c97c86816f10efd 100755
--- a/userprefs.cgi
+++ b/userprefs.cgi
@@ -309,12 +309,12 @@ sub SaveEmail {
  
        # The new information given to us by the user.
         my @new_watch_names = split(/[,\s]+/, $cgi->param('watchedusers'));
-        my @new_watch_ids = ();
+        my %new_watch_ids;
         foreach my $username (@new_watch_names) {
             my $watched_userid = DBNameToIdAndCheck(trim($username));
-            push(@new_watch_ids, $watched_userid);
+            $new_watch_ids{$watched_userid} = 1;
         }
-        my ($removed, $added) = diff_arrays($old_watch_ids, \@new_watch_ids);
+        my ($removed, $added) = diff_arrays($old_watch_ids, [keys %new_watch_ids]);
 
         # Remove people who were removed.
         my $delete_sth = $dbh->prepare('DELETE FROM watch WHERE watched = ?'