我是Perl的新手并尝试解码读取Excel文件并将数据导出到文本文件的Perl脚本。脚本中的一个步骤就是奇怪地执行。 这是一步:
@array_name = grep {$_} @array_name;
如果值为0
,则此步骤仅截断最后一列;否则它正常工作。如果我删除此步骤,则返回值为0
的最后一列,但它在我的数据提取中包含一些虚拟NULL
列,这些列不属于我的源Excel文件。
有人可以帮我理解这一步吗?
答案 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