我有兴趣从数组引用数组中删除特定数组。为此,我循环遍历数组引用并寻找匹配项。如果找到匹配项,我会尝试通过将其设置为等于空来删除这个特定的数组引用。在我编写的脚本中发生了两件奇怪的事情:1)代码似乎识别出感兴趣的数组和数组引用之间存在匹配,甚至在匹配它的数组引用被处理之前。2)在尝试删除一个特定的数组引用时,我最终删除了所有这些引用。这是我的代码:
#!/usr/bin/perl
use strict;
use warnings;
my @array_1 = ('CTCTTGCCTCAATCATATAT', 'CTCTTGCCTCATTGATATAT', 'CTCTTGCCTCAATCATATAT', 'CACTTGCCTCAATGAAATTT', 'GTCTTGCCTCATTGATAAAT', 'CACTTGCCTCAATGTAATAT', 'CTCTTCCCTCAATGATTTAA', 'CACTTGCCTCAATGATATAT', 'CTCTTGCCTCATTGATATAT', 'CTCTTGCCTCAATGTTATAT', 'CTGATGCCTCATTGATATAT', 'CTGTTGGCTCAATCATATAT');
my @array_2 = ('CACTTGCCTCAATGTAATAT', 'TATCATTGCCCAATTTAAGT', 'CACTTGCCTCAATGATATAT', 'CTCTTCCCTCAATGATTTAA', 'CTCTTGCCTCAATGTTATAT', 'CTGTTGGCTCAATCATATAT', 'CTGATGCCTCATTGATATAT', 'GTCTTGCCTCATTGATAAAT', 'CACTTGCCTCAATGAAATTT');
my @array_3 = ('TATCATTGCCCAATTTAAGT', 'TTTCTTTGCCGAATATAAGT', 'TTTCTATGCGCAATTTAAGT', 'TATCTTAGCCCAATTTTTGT', 'TTTCTTTGCCCAATATATGT', 'TTTCTTTGGCCTATTTTTGT', 'TTTGTTTGGCCATTTTATGT', 'TTTCTTTGGCGAATTTATCT', 'TTTCATTGCCCAATTATTGT', 'TTTCTTTGCCCAAAATAAGT', 'CACTTGCCTCAATGTAATAT');
my @array_4 = ('TTTCTTTGCCCAATATATGT', 'TTTCTTTGCCGAATATAAGT', 'TTTCTATGCGCAATTTAAGT', 'TATCTTAGCCCAATTTTTGT', 'TTTCTTTGGCCTATTTTTGT', 'TTTGTTTGGCCATTTTATGT', 'TTTCTTTGGCGAATTTATCT', 'TTTCATTGCCCAATTATTGT', 'TATCATTGCCCAATTTAAGT', 'TTTCTTTGCCCAAAATAAGT', 'CTCTTGCCTCAATCATATAT');
my $array_1_ref = \@array_1;
my $array_2_ref = \@array_2;
my $array_3_ref = \@array_3;
my $array_4_ref = \@array_4;
my @array_to_delete = ('CACTTGCCTCAATGTAATAT', 'TATCATTGCCCAATTTAAGT', 'CACTTGCCTCAATGATATAT', 'CTCTTCCCTCAATGATTTAA', 'CTCTTGCCTCAATGTTATAT', 'CTGTTGGCTCAATCATATAT', 'CTGATGCCTCATTGATATAT', 'GTCTTGCCTCATTGATAAAT', 'CACTTGCCTCAATGAAATTT');
print "Array to delete: ", join(", ", @array_to_delete), "\n";
my @array_of_array_references = ($array_1_ref, $array_2_ref, $array_3_ref, $array_4_ref);
for (my $i = 0; $i <= $#array_of_array_references; $i++){
print "\n", "A single array in the array of array references: ", join(", ", @{$array_of_array_references[$i]}), "\n";
if (@array_to_delete = @{$array_of_array_references[$i]}){
print "Both arrays match!\n";
@{$array_of_array_references[$i]} = ();
}
}
for (my $i = 0; $i <= $#array_of_array_references; $i++){
print "\n", "A single array in the array of array references after removing one: ", join(", ", @{$array_of_array_references[$i]}), "\n";
}
输出是:
Array to delete: CACTTGCCTCAATGTAATAT, TATCATTGCCCAATTTAAGT, CACTTGCCTCAATGATATAT, CTCTTCCCTCAATGATTTAA, CTCTTGCCTCAATGTTATAT, CTGTTGGCTCAATCATATAT, CTGATGCCTCATTGATATAT, GTCTTGCCTCATTGATAAAT, CACTTGCCTCAATGAAATTT
A single array in the array of array references: CTCTTGCCTCAATCATATAT, CTCTTGCCTCATTGATATAT, CTCTTGCCTCAATCATATAT, CACTTGCCTCAATGAAATTT, GTCTTGCCTCATTGATAAAT, CACTTGCCTCAATGTAATAT, CTCTTCCCTCAATGATTTAA, CACTTGCCTCAATGATATAT, CTCTTGCCTCATTGATATAT, CTCTTGCCTCAATGTTATAT, CTGATGCCTCATTGATATAT, CTGTTGGCTCAATCATATAT
Both arrays match!
A single array in the array of array references: CACTTGCCTCAATGTAATAT, TATCATTGCCCAATTTAAGT, CACTTGCCTCAATGATATAT, CTCTTCCCTCAATGATTTAA, CTCTTGCCTCAATGTTATAT, CTGTTGGCTCAATCATATAT, CTGATGCCTCATTGATATAT, GTCTTGCCTCATTGATAAAT, CACTTGCCTCAATGAAATTT
Both arrays match!
A single array in the array of array references: TATCATTGCCCAATTTAAGT, TTTCTTTGCCGAATATAAGT, TTTCTATGCGCAATTTAAGT, TATCTTAGCCCAATTTTTGT, TTTCTTTGCCCAATATATGT, TTTCTTTGGCCTATTTTTGT, TTTGTTTGGCCATTTTATGT, TTTCTTTGGCGAATTTATCT, TTTCATTGCCCAATTATTGT, TTTCTTTGCCCAAAATAAGT, CACTTGCCTCAATGTAATAT
Both arrays match!
A single array in the array of array references: TTTCTTTGCCCAATATATGT, TTTCTTTGCCGAATATAAGT, TTTCTATGCGCAATTTAAGT, TATCTTAGCCCAATTTTTGT, TTTCTTTGGCCTATTTTTGT, TTTGTTTGGCCATTTTATGT, TTTCTTTGGCGAATTTATCT, TTTCATTGCCCAATTATTGT, TATCATTGCCCAATTTAAGT, TTTCTTTGCCCAAAATAAGT, CTCTTGCCTCAATCATATAT
Both arrays match!
A single array in the array of array references after removing one:
A single array in the array of array references after removing one:
A single array in the array of array references after removing one:
A single array in the array of array references after removing one:
预期输出:
Array to delete: CACTTGCCTCAATGTAATAT, TATCATTGCCCAATTTAAGT, CACTTGCCTCAATGATATAT, CTCTTCCCTCAATGATTTAA, CTCTTGCCTCAATGTTATAT, CTGTTGGCTCAATCATATAT, CTGATGCCTCATTGATATAT, GTCTTGCCTCATTGATAAAT, CACTTGCCTCAATGAAATTT
A single array in the array of array references: CTCTTGCCTCAATCATATAT, CTCTTGCCTCATTGATATAT, CTCTTGCCTCAATCATATAT, CACTTGCCTCAATGAAATTT, GTCTTGCCTCATTGATAAAT, CACTTGCCTCAATGTAATAT, CTCTTCCCTCAATGATTTAA, CACTTGCCTCAATGATATAT, CTCTTGCCTCATTGATATAT, CTCTTGCCTCAATGTTATAT, CTGATGCCTCATTGATATAT, CTGTTGGCTCAATCATATAT
A single array in the array of array references: CACTTGCCTCAATGTAATAT, TATCATTGCCCAATTTAAGT, CACTTGCCTCAATGATATAT, CTCTTCCCTCAATGATTTAA, CTCTTGCCTCAATGTTATAT, CTGTTGGCTCAATCATATAT, CTGATGCCTCATTGATATAT, GTCTTGCCTCATTGATAAAT, CACTTGCCTCAATGAAATTT
Both arrays match!
A single array in the array of array references: TATCATTGCCCAATTTAAGT, TTTCTTTGCCGAATATAAGT, TTTCTATGCGCAATTTAAGT, TATCTTAGCCCAATTTTTGT, TTTCTTTGCCCAATATATGT, TTTCTTTGGCCTATTTTTGT, TTTGTTTGGCCATTTTATGT, TTTCTTTGGCGAATTTATCT, TTTCATTGCCCAATTATTGT, TTTCTTTGCCCAAAATAAGT, CACTTGCCTCAATGTAATAT
A single array in the array of array references: TTTCTTTGCCCAATATATGT, TTTCTTTGCCGAATATAAGT, TTTCTATGCGCAATTTAAGT, TATCTTAGCCCAATTTTTGT, TTTCTTTGGCCTATTTTTGT, TTTGTTTGGCCATTTTATGT, TTTCTTTGGCGAATTTATCT, TTTCATTGCCCAATTATTGT, TATCATTGCCCAATTTAAGT, TTTCTTTGCCCAAAATAAGT, CTCTTGCCTCAATCATATAT
A single array in the array of array references after removing one: CTCTTGCCTCAATCATATAT, CTCTTGCCTCATTGATATAT, CTCTTGCCTCAATCATATAT, CACTTGCCTCAATGAAATTT, GTCTTGCCTCATTGATAAAT, CACTTGCCTCAATGTAATAT, CTCTTCCCTCAATGATTTAA, CACTTGCCTCAATGATATAT, CTCTTGCCTCATTGATATAT, CTCTTGCCTCAATGTTATAT, CTGATGCCTCATTGATATAT, CTGTTGGCTCAATCATATAT
A single array in the array of array references after removing one: TATCATTGCCCAATTTAAGT, TTTCTTTGCCGAATATAAGT, TTTCTATGCGCAATTTAAGT, TATCTTAGCCCAATTTTTGT, TTTCTTTGCCCAATATATGT, TTTCTTTGGCCTATTTTTGT, TTTGTTTGGCCATTTTATGT, TTTCTTTGGCGAATTTATCT, TTTCATTGCCCAATTATTGT, TTTCTTTGCCCAAAATAAGT, CACTTGCCTCAATGTAATAT
A single array in the array of array references after removing one: TTTCTTTGCCCAATATATGT, TTTCTTTGCCGAATATAAGT, TTTCTATGCGCAATTTAAGT, TATCTTAGCCCAATTTTTGT, TTTCTTTGGCCTATTTTTGT, TTTGTTTGGCCATTTTATGT, TTTCTTTGGCGAATTTATCT, TTTCATTGCCCAATTATTGT, TATCATTGCCCAATTTAAGT, TTTCTTTGCCCAAAATAAGT, CTCTTGCCTCAATCATATAT