
Я написал скрипт 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
На самом деле этого можно добиться многими способами... просто попробуйте следующий код и дайте мне знать, если возникнут какие-либо разъяснения или возникнут какие-либо ошибки.
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";
}
}