Bienvenido a los foros de Perl en Español, Therion777.
El problema está en la comparación, que no es tal:
$primera_columna = $segunda_columnaEn realidad, eso no es una comparación, sino una asignación. Estás asignando el valor de $segunda_columna en $primera_columna.
Las comparaciones, en Perl, se hacen con operadores de comparación, y que además, se diferencian entre comparaciones numéricas ( ==, !=, <, >, <=, >= y <=>) y las alfanuméricas ( eq, ne, lt, gt, le, gt y cmp).
Si sabes que los datos son siempre numéricos, pues usas '=='. Si no lo son, o no estás seguro, pues usas 'eq'.
Más información en
perldoc perlop.
Hay un error también muy grave: estás haciendo que la línea leída del primer fichero quede almacenada en la variable por defecto $_, y ese valor se pierde en cuanto entra en el segundo bucle, ya que las líneas del segundo fichero sobreescriben $_, por lo que la línea
print $SALIDA $_;
en realidad estás imprimiendo las líneas del segundo fichero.
Debes separar las líneas de cada fichero. Por ejemplo:
while (my $linea_primer_fichero = <$FICHERO1>) {Lo que también puedes hacer es leer los ficheros una sola vez, en vez de leer el segundo fichero de forma completa por cada línea del primero. Puedes leer los ficheros y meter la información relevante en arrays, y luego, recorrerles, grabando el resultado en el tercero.