如何检查数组中的所有ID是否都存在于csv文件中?

时间:2017-05-03 08:51:23

标签: perl grep

我有两个数组:

BLOCK_X= (1,2,3,4)
BLOCK_Y= (3,6,2,5)

CSV

BLOCK_X,BLOCK_Y;DISPLAYTYPE;URBAN;LINKLENGTH;PARENTID;SOURCEID;TRUCKTOLL
1;3;19;;;;1;0
2;6;21;;;;2;0
3;2;23;;;;3;0

现在我将检查 BLOCK_X BLOCK_Y 的所有值是否都在该csv文件的字段BLOCK_XBLOCK_Y内。否则,它应该显示一个值不在其中的消息。

在这种情况下,应该看起来值BLOCK_X = 4BLOCK_Y = 5不在csv文件中。我怎么能意识到这一点?

1 个答案:

答案 0 :(得分:1)

使用 splice尝试以下

use warnings;
use strict;

my @BLOCK_X= (1,2,3,4);

my @BLOCK_Y= (3,6,2,5);

open my $wh,"<","file.csv";

<$wh>; #remove header

while(<$wh>)
{

    my ($x,$y) = (split";")[0,1];  #store the first column in $x and second column in $y

    foreach my $i(0..$#BLOCK_X)
    {

      splice(@BLOCK_X,$i,1) if(($BLOCK_X[$i]) && ($x == int($BLOCK_X[$i]))); #Check if it is values are equal and variable is declared.

      splice(@BLOCK_Y,$i,1) if(($BLOCK_Y[$i]) && ($y == int($BLOCK_Y[$i])));

    }
}

print "@BLOCK_X\n";
print "@BLOCK_Y\n";