PHP también lo puedes ejecutar en modo "CLI" (Comannd Line Interface) como haces con Perl.
PHP en modo CLI:
http://www.php.net/manual/en/features.commandline.php
También PHP tiene una interesante función para "registrar a otra función" y dejar ejecutando a tu script PHP lanzado por la "web" pero en "segundo plano":
register_shutdown_function()
http://www.php.net/register_shutdown_function
Esta función la uso para hacer un pequeño mailing también, .. el proceso lo lanza un usuario del sistema y le muestro la ventanita diciendo algo como "ya puede cerrar esta ventana si lo desea" .. La función mencionada no termina la ejecución del script si el cliente cancela la operación, además que lo libera al instante dejando corriendo el proceso en "segundo plano".
Por otro lado voy haciendo regitro (en una BBDD) del proceso de envio y si fuese necesario consultando esa BBDD que va "creciendo en datos" conforme envio e-mails .. podría ver como va el proceso "casi" en "tiempo real".
Con esto no esto diciendo que Perl no sea la mejor opción .. que seguro que lo es .. para este tipo de casos. Pero también expongo como PHP podría solventar ese detalle o podría hacerlo.
Un saludo,