2017-08-10 16 views
0

おはよう!私はその場でperlを学んでいます。よろしく!Perl、再帰的な検索とテキストファイルのリストからの置換?

私は約650の.xmlファイルを持っています。これらの.xmlファイルを検索して置換するために〜400ペアの文字列があります。文字列は、現在、タブで区切られたテキストファイルにあります。私は左の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

@ダン、これが役に立った場合は、回答の横にあるチェックマークを押して、受け入れたものとしてマークしてください。ありがとう! –

関連する問題