1

これは十分に簡単だと思いました。2 つの配列があり、これらの配列の数字を含む文をファイルに出力したいと考えています。私はこれを試しました:

chomp $array1[$x];
chomp $array2[$x];
print FILE "Number1: $array1[$x] \& Number2: $array2[$x] Some Words\n";

それは私に与えます:

Number1: 0
 & Number2: 87.3
 Some Words

(ここでの数字は一例です。)

なぜこれが起こっているのですか?使ってみました

$array1[$x] =~ s/\n//g;
$array2[$x] =~ s/\n//g;

も同様ですが、何も修正されていません。また、これらの余分な改行を明示的に配置すると、次のようになります。

print FILE "Number1: $array1[$x]\n \& Number2: $array2[$x]\n Some Words\n"

同じ出力が得られるため、不要な改行はもう追加されていません。なんで?

4

1 に答える 1

0

CRLFファイルはWindowsで作成されているため\r\nLF. chompデフォルトでは、 のみを削除しLFます。

LFこの行は、オプションの先行で削除されますCR:

$array1[$x] =~ s/\r?\n//;

または、$/(デフォルトの「入力レコード区切り」)を含むように変更します。\r\nこの時点で、chomp両方を正しく削除する必要があります。

于 2012-10-06T07:20:26.607 に答える