3

私は Perl を初めて使用し、Excel ファイルを読み取ってデータをテキスト ファイルにエクスポートする Perl スクリプトをデコードしようとしています。スクリプトのステップの 1 つが異常に実行されています。これはステップです:

@array_name = grep {$_} @array_name;

値が0;の場合、この手順では最後の列が切り捨てられます。それ以外の場合は、正常に動作します。この手順を削除すると、値を持つ最後の列が返されますが、ソース Excel ファイルの一部ではない0ダミー列が抽出に含まれます。NULL

誰かがこのステップを理解するのを手伝ってくれますか?

4

3 に答える 3

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

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

$variable_value値が格納される変数です。

次の行が削除されます。

于 2012-06-20T06:57:25.463 に答える
1

grep コマンドは、空でないコンテンツをフィルタリングします。そのため、true と評価されないものはすべて破棄されます。空のセルとセルを含むセル0は削除されます。空のセルを削除するだけの場合は、使用できます

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

代わりは。

于 2012-05-24T13:59:47.957 に答える
0

grep基本的に、配列からすべての true 値を返し、0 は false として補間されます。

たとえば、grepここでは true 値を @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 に答える