2016-09-30 36 views
-1

我有要求檢查csv文件中的每一行是否將所有列定義爲每個頭,即使沒有值應該像'||'其中'|'是分隔者。 例如:如何檢查每行是否具有在csv_xs中定義匹配頭的所有列perl

EMPID | EmpName | EmpSalary | EMPDEPT - >標題

001 | AAA | 100 | DEPT1

002 | BBB || DEPT2 - >這行,即使工資沒有有效值

003 | AAA | Dept1 --->此行無效。

由於我正在使用CSV_XS(將文件讀入arrayOfHashes)以方便數據操作,因此如何使用CSV_XS檢查以上場景,其中文件已讀入散列數組。 謝謝 - 庫馬爾

+0

您必須先顯示不適合您的Perl代碼,然後我們才能爲您提供幫助。 – Borodin

回答

0
my $header_row = $csv->getline($fh) 
    or die("No header\n"); 

my $num_header_fields = @$header_row; 

while (my $row = $csv->getline($fh)) { 
    if (@$row != $num_header_fields) { 
     # Invalid 
     ... 
    } 

    ... 
} 
+0

謝謝ikegami,如果通過$ csv-> getline_hr()讀取文件,有沒有類似的方法。 – Kumar

+0

'keys(%$ row)'獲取散列元素的數量 – ikegami

相關問題