【发布时间】:2019-08-01 17:06:16
【问题描述】:
我遇到了解析 csv 文件的问题。 CSV 文件看起来像-
CPU Name,DISABLE,Memory,Encoding,Extra Encoding
,b,d,,
String1,YES,1TB,Enabled,Enabled
String2,NO,1TB,Enabled,Enabled
String3,YES,1TB,Enabled,Enabled
我想在两个不同的数组中捕获前两行。我用来做的代码是-
my $row_no =0;
while(my $row=<$fi>){
chomp($row);
$row=~ s/\A\s+//g;
$row=~s/\R//g;
#say $row;
if($row_no==0)
{
#say $row;
my @name_initial = split(',',$row);
say length(@name_initial);
say @name_initial;
}
elsif($row_no==1)
{
#say $row;
@data_type_initial =split(',',$row);
say length(@data_type_initial);
say @data_type_initial;
}
$row_no++;
}
现在我从文件中最上面的两行(分别为@name_initial 和@data_type_initial)形成了两个数组。当我打印这些数组时,我可以看到所有 5 个值,但是当我打印数组的长度时,它显示的长度为每个数组为 1。当我使用数组的索引打印元素时,我发现每个元素都在适当的位置,那么为什么它显示长度为 1。由 csv 文件的第二行形成的第二个数组也打印为“bd”。所有空值都消失了,尽管它包含两个值“b”和“d”。它的长度打印为 1。
我想用所有 null 和 non_NULL 值转换数组中的 csv 文件行,以便我可以迭代数组元素并可以根据 null 和非 null 值给出条件。我该怎么做???
【问题讨论】: