Perl-скрипт для извлечения определенного каталога и изменения XML-файла


0

Я написал Perl-скрипт для изменения XML-файла, который отлично работает только для одного файла. Я хочу, чтобы мой скрипт извлек папку xml и изменил внутри нее файл xml. Таким образом, он должен работать для всех файлов XML в папках XML. так как я могу достичь этого.

Вот мой код

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

Возможно, будет гораздо проще использовать XML-модули декодирования / кодирования, такие как XML :: Simple
mveroone

Ответы:


0

На самом деле вы можете добиться этого разными способами ... просто попробуйте следующий код и дайте мне знать, если есть какие-либо разъяснения или есть какие-либо ошибки.

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

        }

}

Это дает синтаксическую ошибку около "-f, если" рядом "} else"
user1345837

была небольшая ошибка в утверждении if !!! я исправил это ... попробуйте это сейчас !!!
Тиягу ATR

на этот раз это должно работать!
Тиягу ATR
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.