He estado tratando de hacer un código en Perl que me permita tomar de una carpeta un número de archivos de texto y ponerlos en otra carpeta que se encuentra vacía. Para ésto tengo una lista de la carpeta 1 con todos los nombres de los archivos y tengo otra lista con solo los archivos que quiero pasar a la otra carpeta. El nombre de cada uno de los archivos está compuesto de cuatro partes y el problema es que las cuatro partes no concuerdan exactamente entre las dos listas, pero a mí solo me interesa que concuerden las dos primeras partes del nombre de cada uno de los archivos.
Este es el código que he estado haciendo, pero al final me crea en la carpeta vacía todos los archivos de la carpeta 1 pero sin ningún contenido (documentos en blanco).
Using perl Syntax Highlighting
- #!/usr/bin/perl;
- open( LIST, "lista.txt" );
- @lista = (<LIST>);
- @nombres_corregidos = nombrearchivo(@nombres);
- print "@nombres_corregidos\n";
- print @nombres_corregidos[1], "\n";
- foreach $nom (@lista) {
- foreach $nombre_corregido (@nombres_corregidos) {
- if ( $nom =~ /$nombre_corregido/ ) {
- open( INFO, "archivos/$nom" );
- open( M, ">archivos2/$nom" );
- @info = (<INFO>);
- print @info;
- print M @info;
- }
- else {
- print "no existe $nom\n";
- }
- }
- }
- exit;
- sub nombrearchivo {
- my @nombres = '';
- open( LIST2, "lista2.txt" );
- @lista2 = <LIST2>;
- foreach $nombre_completo (@lista2) {
- ( $uno, $dos, $tres, $cuatro ) = split( '/', $nombre_completo );
- my $nombre = $uno . $dos;
- push( @nombres, $nombre );
- }
- return @nombres;
- }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Por favor, si alguien me pudiera ayudar le estaría profundamente agradecido.