私のPerlコードでは、電子メールにアクセスしています。その中のテーブルをフェッチして、配列に解析する必要があります。私はそれを使用してそれをしました:
my @plain = split(/\n/,$plaintext);
ただし、には多くの空白要素があり@plain
ます。572個の要素があり、そのうちの約半分は空です。
私はここで何か間違ったことをしていますか?空白の要素を取り除くために、コードに何を追加/変更する必要がありますか?
grep
出力なので、ホワイトペース以外の文字を含むエントリのみを取得します。
my @plain = grep { /\S/ } split(/\n/,$plaintext);
それを行う正しい方法は、@dave-crossからここにあります
分割を修正する準備ができていない場合は、すばやく汚い:
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, $_);
コードに1行追加する必要があり、それは機能します
@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