ユーザーアイコンをアップロードできるようなものを考えています。
アップロードできる形式はgif、png、jpegで、
アップロードすると(ユーザーID).gifのような名前になります。
アイコンを更新する場合、アップロード前に
古いアイコンを削除する必要があるので、以下のように書きました。

opendir DIR, "./icon" || die("directory open error");
my @icons = readdir DIR;
@icons = grep $_ =~ /$id/, @icons;
closedir DIR || die("directory close error");
foreach my $icon (@icons) {
unlink "./icon/" . $icon;
}

ところが、これを実行したところ、プログラムがそこで止まってしまいます。
エラー等は吐かずにただ止まってしまうので、原因が分かりません。

$idとマッチするファイル名を@iconsに集めるまでは上手くいっているようなので
foreach以降に問題があるようですが、解決策がどうしても見つかりません。
どこに問題があるかご存知の方がいましたら、ご教示ください。
よろしくお願いします。