が記載されていないのはなぜ私のPerl地図に戻ものはありますか?

StackOverflow https://stackoverflow.com/questions/12103

  •  08-06-2019
  •  | 
  •  

質問

をしたい場合は、次の声明を発表した。

@filtered = map {s/ //g} @outdata;

であり、空のリストの代わりにフィルタリストできたので、良かったです。思いは削除すべが発生   配列からの文字列であるXMLファイル).

明らかにしない。誰でもできるので教えてくは正しくないというこれは、なぜこん働いてますか?

役に立ちましたか?

解決

してみてください:

@filtered = map {s/ //g; $_} @outdata;

問題は、sオペレーターにperlを変更す$_が実際の数を返します変化します。なので、余分な$_の原因perlに戻り、修正された文字列の各要素@outdata.

他のヒント

この地図は変更のソース配列しています。うかい:

map {s/ //g} @outdata;

skipは@フィルタの変数となる場合に必要なものを保持する原

@filtered = @outdata;
map {s/ //g} @filtered;

が、その場合は、この読みやすくするために使用foreach:

s/ //g foreach @filtered;

Gregの答えの問題での変更は元の配列として$_伝含.必要なもの:

@filtered = map { (my $new = $_) =~ s/ //g; $new} @outdata;

フォローアップTithoniumのポイントは、今もん:

@filtered = map {local $_=$_; s/ //g; $_} @outdata;

の"地"を確保すさんにもコピーではなく、オリジナルです。

Perl5.14があ /r 正規表現の修飾子 非破壊で置換.

@filtered = map {s/ //gr} @outdata;
use Algorithm::Loops "Filter";
@filtered = Filter { s/ //g } @outdata;

としてご論考を読ませGregの回答、ご用grep:

@filtered = grep {s/ //g; 1} @outdata;

んでいます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top