Perl:我想移动数组中与模式匹配的每个元素。
例如,我有下面的数组 @array1 = {cat 2, dog 3#move, tiger 4#move, lion 10}
现在我想将狗 3、老虎 4(作为模式 #move 匹配)移动到另一个数组让我们说 @array2
foreach $array (@array1) {
if ($array =~ m/(./w*) (./d*)#move/) {
push @array2, $1.$2;
}
但我想从 array1 中删除那些元素。提前致谢
最佳答案
有不止一种方法可以做到这一点,所以这是另一种方法,灵感来自 this answer : 使用 grep
来保留你想要的元素。由于 Perl 仅支持在某些情况下从您正在迭代的数组中删除元素,因此这不需要您知道这些是哪些情况:)。
use strict; use warnings;
my @array1 = ("cat 2", "dog 3#move", "tiger 4#move", "lion 10");
my @array2;
@array1 = grep { # We are going to search over @array1 and only keep some elements.
if (/(.*)#move/) { # If this is one we want to move...
push @array2, $1; # ... save it in array2...
0; # ... and do not keep it in array1.
} else {
1; # Otherwise, do keep it in array1.
}
} @array1;
# Debug output - not required
print "Array 1\n";
print join "\n", @array1;
print "\nArray 2\n";
print join "\n", @array2;
print "\n";
输出:
Array 1
cat 2
lion 10
Array 2
dog 3
tiger 4
关于arrays - Perl 数组 : Pattern matches then move to the another array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56007213/