Bienvenido a los foros de Perl en Español, gonzalos.
Tu programa resuelve muy poco del problema, pues no sigue el guión que tu mismo debes seguir. Te aconsejo que traduzcas, línea a línea, tu guión, a código Perl. Por ejemplo, veo que no lees de ningún fichero: estás escribiendo en los
dos.
Para el tema de contar secuencias repetidas, en vez de usar un arreglo, te aconsejo que uses un arreglo asociativo (
hash), porque es precisamente lo que tratamos de resolver: recordar si un nombre ya ha salido o no.
Por estos foros hay multitud de ejemplos de códigos que hacen lo que pides en tu programa. Te aconsejo que empieces por ver los
Tutoriales y la sección de básico. Usa también el sistema de búsqueda o Google ajustado a este sitio, para localizar código.
En cuanto a las estructuras de control, tienes varias opciones.
Si quieres leer del usuario 5 nombres, pues, por ejemplo, entonces puedes hacer un bucle de justo esa cantidad:
Using perl Syntax Highlighting
for (1 .. 5) {
# Leer la entrada estándar y guardar en disco
}
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Una vez que hayas terminado de leer la entrada del usuario, cierras los ficheros con close(), y abres el fichero recién creado (con "
<fichero") y vas leyendo línea a línea. Por cada línea, la almacenas en el arreglo asociativo, incrementando en 1 el número de veces que la has visto. Finalmente, haces un bucle recorriendo las claves de ese arreglo (que serán los nombres leídos) y muestras al lado de cada uno de ellos las veces que aparecen (que es el valor almacenado por cada clave, en el arreglo asociativo).
¡Inténtalo!