2017-08-10 55 views
0

早上好!我正在學習perl。耶,學習!Perl,遞歸查找並從文本文件中的列表中替換?

我有〜650個.xml文件。我有~400對字符串來查找和替換這些.xml文件。字符串當前位於製表符分隔的文本文件中。我需要替換左邊的7個字符,每個對都用圖拉等等。

FCN.D75 Figure 0001. Air Compressor 
FCN.D90 Figure 0002. Air Compressor Cooling Lines 
FCN.D84 Figure 0003. Air Compressor Supply Lines 

我看到的是如何找到並從列表中的文件替換,以及如何找到並通過目錄遞歸取代,但不是魔術組合幾種解決方案几種解決方案。

在此先感謝您提供的任何幫助。

+5

你嘗試過什麼?你有什麼問題?請告訴我們你的代碼。如果你沒有任何代碼,那麼Stack Overflow不是問你問題的最佳地方。 –

回答

0

喜歡的東西(你需要安裝文件:: Slurper或自行模仿其潛艇):

#!/usr/bin/env perl 

use File::Find qw(find); 
use File::Slurper qw(read_lines read_text write_text); 

my %phrases = map { 
    split m/\s/, $_, 2 
} read_lines('phrases_list.txt'); 

find(
    { 
     no_chdir => 1, 
     wanted => sub { 
      my $file_path = $File::Find::name; 
      next if $file_path !~ m/\.xml$/; 
      next unless -f $file_path; 

      my $text = read_text($file_path); 
      $text =~ s/\Q$_\E/$phrases{$_}/ge for keys %phrases; 
      write_text($file_path, $text); 
     }, 
    }, 
    '.' 
); 
+0

@丹,如果這有幫助,請按下答案旁邊的複選標記將其標記爲已接受。謝謝! –