在我的Perl代码中,我正在访问一封电子邮件。我需要获取其中的表并将其解析为数组。我用:
my @plain = split(/n/,$plaintext);
但是,@plain
中有许多空白元素。它有572个元素,其中大约一半是空的。
我在这里做错了什么吗?我需要在代码中添加/更改什么才能摆脱空白元素?
grep
输出,因此您只能获得包含非白配字符的条目。
my @plain = grep { /S/ } split(/n/,$plaintext);
正确的方法是从@dave交叉
快速而肮脏,如果你不想修复你的分裂:
foreach(@plain){
if( ( defined $_) and !($_ =~ /^$/ )){
push(@new, $_);
}
}
编辑:它是如何工作的
将会有比上述方法更优雅和有效的方法,但就像所有perl-y tmtowtdi一样! 其工作方式是:
遍历数组
@plain
,使$_
设置为当前数组元素foreach(@plain){
检查当前元素,看看我们是否对它感兴趣:
( defined $_) # has it had any value assigned to it !($_ =~ /^$/ ) # ignore those which have been assigned a blank value eg. ''
如果当前元素通过这些检查,则将其推送到@new
push(@new, $_);
代码中需要添加一行,并且可以正常工作
@plain= grep { $_ ne '' } @plain;
使用的,太晚了,但这很好,可以在将来使用
$t = "1.2,3.4,3.12,3.18,3.27";
my @to = split(',',$t);
foreach $t ( @to ){
push ( @valid , $t );
}
my $max = (sort { $b <=> $a } @valid)[0];
print $max