
Eu escrevi um script perl para modificar o arquivo xml que está funcionando bem para apenas um arquivo. Quero que meu script busque a pasta xml e modifique o arquivo xml dentro dela. Assim, ele deve ser executado para todos os arquivos xml nas pastas xml. então como posso conseguir isso.
Aqui está meu código.
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);
Responder1
Na verdade, você pode conseguir isso de várias maneiras..... apenas tente o código a seguir e me avise se tiver algum esclarecimento ou algum erro.
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";
}
}