Perl Excel解析器截断列

时间:2012-05-24 13:19:24

标签: perl excel file

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

@array_name = grep {$_} @array_name;

如果值为0,则此步骤仅截断最后一列;否则它正常工作。如果我删除此步骤,则返回值为0的最后一列,但它在我的数据提取中包含一些虚拟NULL列,这些列不属于我的源Excel文件。

有人可以帮我理解这一步吗?

3 个答案:

答案 0 :(得分:1)

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

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

代替。

答案 1 :(得分:1)

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

$variable_value =~s/\n//g;

$variable_value是存储值的变量。

它将删除下一行。

答案 2 :(得分:0)

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

例如,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