Существует более одного способа сделать это, так что вот еще один, вдохновленный этим ответом : используйте 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