Bienvenido/a a Perl en Español, Tharanys.
El problema está en que la lectura de las líneas la haces a la variable por defecto ($_), pero luego no la usas para hacer la comparación. Mejor usar una variable explícita, y así se ve más claro el funcionamiento:
Using perl Syntax Highlighting
open (FILE_1,'>',"salida.txt"); # abrimos el archivo resultado, en escritura
while (my $linea = <FROM>) { # leemos el archivo, por líneas; cada línea la guardamos en $linea
if ($linea =~ /^>/) { # si la $linea comienza (^) por '>'
print FILE_1 $linea; # imprimimos la $linea en FILE_1
}
}
close (FILE_1); # cerramos archivo resultado
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Fíjate que abrimos y cerramos el archivo resultado una sola vez, antes y después del bucle, no dentro de él. Si lo hiciéramos dentro, estarías sobreescribiendo el contenido anterior cada vez que encontrases una nueva línea.
Una vez entendido cómo se hace esto, Perl te permite escribirlo de forma más abreviada:
Using perl Syntax Highlighting
open (FILE_1,'>',"salida.txt"); # abrimos el archivo resultado, en escritura
while (<FROM>) { # leemos el archivo, por líneas; cada línea la guardamos en $_
if (/^>/) { # si la $_ comienza (^) por '>'
print FILE_1; # imprimimos la $_ en FILE_1
}
}
close (FILE_1); # cerramos archivo resultado
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
La variable $_ (la de por defecto) nos permite realizar operaciones que la van a usar si no se indica ninguna otra variable.
Si estás empezando, mejor usa el primer método, y poco a poco vas pasando al segundo. Pero siempre que en el programa quede claro qué es lo que estás haciendo.