从AOA perl中删除一个数组

Gau*_*rav 1 perl multidimensional-array

我有一个看起来像这样的数组 -

$VAR1 = [
          'sid_R.ba',
          'PS20TGB2YM13',
          'SID_r.BA',
          'ARS',
          'XBUE'
        ]; $VAR2 = [
          'sddff.pk',
          'PQ10XD06K800',
          'SDDFF.PK',
          'USD',
          'PINX'
        ]; $VAR3 = [
          'NULL',
          'NULL',
          'NULL',
          '.',
          'XNAS'
        ]; $VAR4 = [
          'NULL',
          'NULL',
          'NULL',
          '.',
          'XNAS'
        ]; $VAR5 = [
          'NULL',
          'NULL',
          'NULL',
          'EUR',
          'OTCX'
        ]; $VAR6 = [
          'sid.ba',
          'PS20TGB1TN17',
          'SID.BA',
          'ARS',
          'XBUE'
        ];
Run Code Online (Sandbox Code Playgroud)

我想删除完整的块(数组引用),如果它的任何元素是NULL

我有一个代码,其中生成数组,所以我尝试了一个for循环删除,但然后在for循环内部减少了数组的索引.

所以我不知道数组的顺序或数组的长度.我需要一个通用的解决方案.

请帮忙.

谢谢

amo*_*mon 7

你似乎有一个类似的数组

my @AoA = (
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, "NULL"],
  [9, 10],
);
Run Code Online (Sandbox Code Playgroud)

您想要选择所有不包含的子数组"NULL".简单:只需使用嵌套grep:

my @AoA_sans_NULL = grep {
  not grep { $_ eq "NULL" } @$_
} @AoA;
Run Code Online (Sandbox Code Playgroud)

该grep { CONDITION } @array选择从所有元素@array,其中CONDITION评估为True.

的grep { $_ eq "NULL" } @$_计数的数目"NULL"S上的内阵列英寸 如果这是零,我们的条件为真,否则,我们不想保留该子数组.


Сух*_*й27 5

    use List::MoreUtils qw(none);
    my @filtered = grep {
      none { $_ eq "NULL" } @$_;
    } @array;
Run Code Online (Sandbox Code Playgroud)