Я написал 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);

1 ответ1

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

        }

}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .