สคริปต์ 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 :: ง่าย
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 if" near "} else"
user1345837

มีข้อผิดพลาดเล็กน้อยถ้าคำสั่ง !!! ฉันแก้ไขถูกต้อง ... ลองทำดูสิตอนนี้ !!!
Thiyagu ATR

คราวนี้มันควรจะทำงาน!
Thiyagu ATR
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.