解決するか分からないけど
opendir DIR, "./icon" || die("directory open error");
while (my $icon = readdir DIR) {
unlink "./icon/" . $icon or die $! if /^$id\.(?:gif|png|jpe?g$)/i;
}
closedir DIR || die("directory close error");

ユーザー増えると遅くなるからディレクトリなめるやり方は良くないよ