質問
をしたい場合は、次の声明を発表した。
@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;
んでいます。
所属していません StackOverflow