2017-05-03 3 views
0

Ich habe zwei Arrays:Wie überprüft man, ob alle IDs in einem Array in einer CSV-Datei vorhanden sind?

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 

Jetzt BLOCK_X und BLOCK_Y innerhalb des Feldes sind BLOCK_X und BLOCK_Y dieser CSV-Datei, wenn alle Werte von I überprüfen wird . Andernfalls sollte eine Meldung erscheinen, deren Werte nicht drin sind. In diesem Fall sollte der Wert BLOCK_X = 4, BLOCK_Y = 5 nicht in der CSV-Datei enthalten sein. Wie kann ich das erkennen?

Antwort

1

Mit splice versuchen die Folge

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"; 
Verwandte Themen