Arrays Perl用数组替换搜索后的文本
我正在寻找一个可以进行替换的perl程序,但是我的循环每次都不起作用。例如,这一概念是:Arrays Perl用数组替换搜索后的文本,arrays,perl,substitution,Arrays,Perl,Substitution,我正在寻找一个可以进行替换的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); 我想让第二个数组与第一个数组进行比较,找出狐狸和狗的元素,用兔子和猫替换它 所以这句话应该变
#!/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);
我想让第二个数组与第一个数组进行比较,找出狐狸和狗的元素,用兔子和猫替换它
所以这句话应该变成“一只敏捷的棕色兔子跳过了懒猫”
这是一个概念,但数据是不同的,第二个和第三个数组可能每个包含50个元素。任何帮助都将不胜感激。我会做以下事情:
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",
)
我不懂perl,但我认为类似:(受javascript影响) 放入一个循环应该会起作用 (输出示例:)
我自己也是个新手,但我想到的是:
use strict;
use warnings;
my @array1 = qw(A quick brown fox jumps over the lazy dog);
my @array2 = qw(fox dog);
my @array3 = qw(rabbit cat);
my $index = 0;
foreach (@array1) {
$index++ if s/$array2[$index]/$array3[$index]/;
}
print join(' ',@array1), "\n";
请显示您尝试过的代码,并解释它在做什么或不做什么。您不应该使用
@array2
和@array3
而是应该使用单个哈希:我的%map=(“狐狸”=>“兔子”,“狗”=>“猫”,…)
同样,$\u1=$h{$\u}| |$\ u1代表@array1代码>@TLP@corresp{map fc,@array2}=@array3
@mpapec是的,不管怎样,使用散列是唯一可行的选择。如果array2中的单词的顺序与array1中的单词的顺序不同,这将不起作用(即:尝试将array1更改为qw(一只棕色的小狗跳过懒狐狸);
我明白你的意思。回到绘图板上。
console.log(replace('A quick brown fox jumps over the lazy dog', 'fox', 'rabbit'));
A quick brown rabbit jumps over the lazy dog
#!/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);
my %h;
@h{@array2} = @array3;
@array1 = map { $h{$_} || $_ } @array1;
use strict;
use warnings;
my @array1 = qw(A quick brown fox jumps over the lazy dog);
my @array2 = qw(fox dog);
my @array3 = qw(rabbit cat);
my $index = 0;
foreach (@array1) {
$index++ if s/$array2[$index]/$array3[$index]/;
}
print join(' ',@array1), "\n";