Perl Excelparsing器截断列

我是Perl新手,尝试解码读取Excel文件并将数据导出到文本文件的Perl脚本。 脚本中的其中一个步骤是奇怪地执行。 这是一个步骤:

@array_name = grep {$_} @array_name; 

如果值为0 ,则这一步只截断最后一列; 否则它正常工作。 如果我删除这一步,值为0的最后一列返回,但它包含了我的提取中的一些虚拟NULL列,这些列不是我的源Excel文件的一部分。

有人能帮我理解这一步吗?

grep命令过滤非空内容。 因此,所有不被评估为真的东西都将被丢弃。 空单元格和包含0单元格将被删除。 如果你只是想删除你可以使用的空单元格

 @array_name = grep { defined && length } @array_name ; 

代替。

 $A->[$i][10]=~s/\n//g; $variable_value =~s/\n//g; 

$variable_value是存储值的variables。

它将删除下一行。

grep基本上返回数组中的所有真值,而0被插入为假。

例如grep在这里用来过滤真正的值到@b,

 my @dirty = (0,1,2,3,,0,5,); my @clean = grep {$_} @dirty; for(@clean) {print "$_\n";} 

返回

 1 2 3 5 

保存零的一个小技巧就是在grep参数中添加一个换行符:

 my @dirty = (0,1,2,3,,0,5,); my @clean = grep {"$_\n"} @dirty; for(@clean) {print "$_\n";} 

其中返回,

 0 1 2 3 0 5