Perl — удалить из массива несоответствующие условию элементы

Удаляем все элементы, которые не цифры. Работаем с референсом.

#!/usr/bin/perl
use strict;
use Data::Dumper;
my $a = [234235,'a',345,34234,23121];
$a = [grep {/^\d+$/ } @$a];
print Dumper $a;

UPD Rommeech заметил багу, исправил

4 комментария

  1. evgenty:

    my $a = [234235,'a',345];

    my $a = [grep { $a->[$_] !~ /^\d+$/ } @$a];

    «my» variable $a masks earlier

    2 раза my не нада писать

  2. Rommeech:

    У вас ошибка в коде, при my $a = [234235,'a',345, 1, 2, 3]; уже не работает.

    Надо:

    $a = [grep { /^\d+$/ } @$a];

Комментировать

Войдите чтобы оставить комментарий.