¿Cómo puedo filtrar una matriz sin usar un bucle en Perl?

Aquí estoy tratando de filtrar solo los elementos que no tienen una subcadenaworld y almacenar los resultados nuevamente en la misma matriz. ¿Cuál es la forma correcta de hacer esto en Perl?

$ cat test.pl
use strict;
use warnings;

my @arr = ('hello 1', 'hello 2', 'hello 3', 'world1', 'hello 4', 'world2');

print "@arr\n";
@arr =~ v/world/;
print "@arr\n";

$ perl test.pl
Applying pattern match (m//) to @array will act on scalar(@array) at
test.pl line 7.
Applying pattern match (m//) to @array will act on scalar(@array) at
test.pl line 7.
syntax error at test.pl line 7, near "/;"
Execution of test.pl aborted due to compilation errors.
$

Quiero pasar la matriz como argumento a una subrutina.

Sé que una forma sería algo como esto

$ cat test.pl 
use strict;
use warnings;

my @arr = ('hello 1', 'hello 2', 'hello 3', 'world1', 'hello 4', 'world2');
my @arrf;

print "@arr\n";

foreach(@arr) {
    unless ($_ =~ /world/i) {
       push (@arrf, $_); 
    }
}
print "@arrf\n";

$ perl test.pl
hello 1 hello 2 hello 3 world1 hello 4 world2
hello 1 hello 2 hello 3 hello 4
$

Quiero saber si hay una manera de hacerlo sin el ciclo (usando un filtro simple).

Respuestas a la pregunta(4)

Su respuesta a la pregunta