我有两个数组:
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_X
和BLOCK_Y
内。否则,它应该显示一个值不在其中的消息。
在这种情况下,应该看起来值BLOCK_X = 4
,BLOCK_Y = 5
不在csv文件中。我怎么能意识到这一点?
答案 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";