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


0

Ich habe ein Perl-Skript zum Ändern von XML-Dateien geschrieben, das nur für eine Datei funktioniert. Ich möchte, dass mein Skript den XML-Ordner abruft und die darin enthaltene XML-Datei ändert. So sollte es für alle XML-Dateien in den XML-Ordnern ausgeführt werden. Wie kann ich das 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);

Es kann viel einfacher sein, XML-Dekodierungs- / Kodierungsmodule wie XML :: Simple zu verwenden
— mveroone

Antworten:


0

Tatsächlich können Sie dies auf viele Arten erreichen ..... Probieren Sie einfach den folgenden Code aus und lassen Sie mich wissen, ob Klarstellungen oder Fehler vorliegen.

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

        }

}

Es gibt Syntaxfehler bei nahe "-f wenn" nahe "} else"
— user1345837

Es gab einen kleinen Fehler in der if-Anweisung !!! Ich habe diesen Fehler korrigiert ... versuche es jetzt !!!
— Thiyagu ATR

diesmal sollte es klappen!
— Thiyagu ATR
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.