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.