No debes usar
hash porque Perl no almacena los pares clave/valor en el orden en que se los das. A la hora de recuperarlos te llevarás la sorpresa de que has perdido el orden en que fueron leídas de los ficheros.
Y en cuanto a la combinación... no existe porque no la haces.
Lo único que hace el programa que muestras es hacer una estadística de la frecuencia de aparición de las palabras y luego sacarlas por ese orden. Pero no hay combinación ninguna.
¿No dices que lo tienes hecho para PHP y Java? Pues coges las líneas para PHP y apenas tienes que modificar muy poco para obtener el de Perl.
Ya has hecho la parte de abrir y leer ficheros, que podría quedar mejor así:
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
open my $fichero1, q[<], 'Texto1.txt'; # Abrimos
open my $fichero2, q[<], 'Texto2.txt';
my @palabras1 = <$fichero1>; # Leemos
my @palabras2 = <$fichero2>;
close $fichero1; # Cerramos
close $fichero2;
chomp @fichero1; # Quitamos los caracteres de fin de línea
chomp @fichero2;
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ahora ya tienes todas las palabras leídas en dos arreglos. Solo te queda realizar un doble bucle que recorra cada una ellos, sacando la concatenación de los elementos. El operador de concatenación, en Perl, es el '.'. También puedes hacer la concatenación poniendo las dos variables en una expresión entrecomillada: por ejemplo: print "$palabra1$palabra2\n";
Ánimo, ¡que solo quedan 5 líneas!
P.D. ¿De cuántas palabras estamos hablando para que no funcione en PHP y Java?