私はうまく動作するスクリプトを持っていますが、私が抱えている問題は、マッチしたすべての単語を組み合わせてスペーシングを削除していることです。誰かが私に何があるか教えてもらえれば、またはスクリプトが試合中の単語を組み合わせないようにするために行方不明になっている。Perlスクリプトがスペースを削除しています
use strict;
my $find = '^M0|MT';
my $match = 0;
open (NEW, ">", "Output.txt") or die "could not open:$!";
open (FILE, "<", "File.txt") or die "could not open:$!";
while (<FILE>) {
chomp;
if ($match){
$match = 0;
s/\s+//g;
print NEW "$_\n";
}
if (/$find/){
$match = 1;
print NEW "$_"
}
}
close (FILE);
close (NEW);
ファイルの例
U# mul acc UNIT # HAS MULTIPLE ACCOUNTS FAIL
出力例(現在、私のスクリプトで何が起こっている)
U#mulaccUNIT#HASMULTIPLEACCOUNTSFAIL
's/\ s + // g;'行で何をしようとしていますか? – ThisSuitIsBlackNot
あなたが提供したコードは、サンプル入力に対して行った出力を生成しません。空のファイルが生成されます。その理由は、サンプルのFile.txtには存在しない '^ M0 | MT'を探しているからです。その正規表現に一致するようにサンプルファイルを変更しても、あなたが要求する出力は生成されません。代わりに、元の行は、改行が不足しているOutput.txtファイルに格納されます。 – bart
プライベートな情報のため、最初の行を削除しました。申し訳ありませんが、私は一般的な行を追加する必要があります。 my(/ $ find /)では、printをNEWに設定するには、文字が行の最初の列と一致する場合のみNEWを出力します。 @bart – PhoenixJay