Ich sehe hier nichts, was einen Bezug zum Perl-Interpreter herstellen sollte. Du liest ein Verzeichnis und konvertierst die Namen von der Windows-Codepage in UTF-8.
Ich frage mich allerdings, weshalb Du PHP 5.3.1 einsetzt. Möglicherweise ist hier ein Fehler in der iconv-Funktion oder im Verzeichnis-Iterator.
Und Du solltest vom PHP Interpreter eine genauere Auskunft bekommen, über was er sich erbricht. Setze doch mal
error_reporting(E_ALL);
an den Beginn.
Rolf