Script Perl para buscar un directorio particular y modificar el archivo xml

Script Perl para buscar un directorio particular y modificar el archivo xml

He escrito un script en Perl para modificar el archivo xml que funciona bien para un solo archivo. Quiero que mi secuencia de comandos busque la carpeta xml y modifique el archivo xml que contiene. Así debería ejecutarse para todos los archivos xml en las carpetas xml. entonces, ¿cómo puedo lograrlo?

Aquí está mi código.

open(FILE, "/home/AP/abc.xml") || die "File not found";
my @lines = <FILE>;
close(FILE);

my @newlines;
foreach(@lines) {
   $_ =~ s/<abc>/$&\n<!--a-->\n<!--b-->\n<!--c-->/g ;
                     s/hai/bye/g;
                     s/---/--/g;
                     s/***/**/g;

   push(@newlines,$_);
}
open(FILE, "/home/AP/abc.xml") || die "File not found";
print FILE  @newlines;
close(FILE);

Respuesta1

En realidad, puedes lograr esto de muchas maneras... simplemente prueba el siguiente código y avísame si tienes alguna aclaración o algún error.

sub fileprocessor{
    (my $file_name)=@_;

    my $tmp_filename="/home/AP/$file_name";
open(FILE, "$tmp_filename") || die "File not found";
my @lines = <FILE>;
close(FILE);

my @newlines;
foreach(@lines) {
   $_ =~ s/<abc>/$&\n<!--a-->\n<!--b-->\n<!--c-->/g ;
                     s/hai/bye/g;
                     s/---/--/g;
                     s/***/**/g;

   push(@newlines,$_);
}
open(FILE, "$tmp_filename") || die "File not found";
print FILE  @newlines;
close(FILE);

}


foreach(<*>){

     if(-f $_){
                fileprocessor($_);
        }else{

            print "directory\n";

        }

}

información relacionada