0

置換を行う perl プログラムを探していますが、毎回ループが機能しません。たとえば、コンセプトは次のとおりです。

#!/usr/bin/perl
use warnings;
use strict;

my @array1 = qw(A quick brown fox jumps over the lazy dog);
my @array2 = qw(fox dog);
my @array3 = qw(rabbit cat);

2 番目の配列を最初の配列と比較し、要素 fox と dog を取り出して、rabbit と cat に置き換えます。

したがって、文は「怠惰な猫を飛び越えた素早い茶色のウサギ」になるはずです。

これは概念ですが、データは異なり、2 番目と 3 番目の配列にはそれぞれ 50 個の要素が含まれている可能性があります。どんな助けでも大歓迎です。

4

4 に答える 4

7

私は次のようなことをします:

use strict;
use warnings;
use Data::Dump qw(dump);

my @array1 = qw(A quick brown fox jumps over the lazy dog);
my @array2 = qw(fox dog);
my @array3 = qw(rabbit cat);
my %corresp;
@corresp{@array2} = @array3;

foreach my $word(@array1) {
    $word = $corresp{$word} if exists $corresp{$word};
}
dump@array1;

出力:

(
  "A",
  "quick",
  "brown",
  "rabbit",
  "jumps",
  "over",
  "the",
  "lazy",
  "cat",
)
于 2013-09-13T12:31:21.247 に答える