3

我是 Perl 的新手,并试图解码读取 Excel 文件并将数据导出到文本文件的 Perl 脚本。脚本中的步骤之一执行异常。这是步骤:

@array_name = grep {$_} @array_name;

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

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

4

3 回答 3

1

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

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

反而。

于 2012-05-24T13:59:47.957 回答
1
$A->[$i][10]=~s/\n//g;

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

$variable_value是存储值的变量。

它将删除下一行。

于 2012-06-20T06:57:25.463 回答
0

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
于 2012-05-24T13:55:55.137 回答