Perl-Skript zum Abrufen eines bestimmten Verzeichnisses und Ändern der XML-Datei

Perl-Skript zum Abrufen eines bestimmten Verzeichnisses und Ändern der XML-Datei

Ich habe ein Perl-Skript zum Ändern einer XML-Datei geschrieben, das nur für eine Datei einwandfrei funktioniert. Ich möchte, dass mein Skript den XML-Ordner abruft und die darin enthaltene XML-Datei ändert. Auf diese Weise sollte es für alle XML-Dateien in den XML-Ordnern ausgeführt werden. Wie kann ich das also erreichen?

Hier ist mein Code.

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);

Antwort1

Tatsächlich können Sie dies auf mehrere Arten erreichen. Probieren Sie einfach den folgenden Code aus und lassen Sie mich wissen, ob es Erläuterungen gibt oder ein Fehler auftritt.

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";

        }

}

verwandte Informationen