0

変数をファイル (HTML) に出力しようとしていますが、何もうまくいかないようです。

STDOUT に出力して、変数に実際にデータが含まれていることを確認しましたが、ファイルに出力されることはありません。

コードは次のとおりです。

#BEGIN Replication Table
$REPstatCmd = "/bin/rstat";
@REPstat = split /\n/,`$REPstatCmd`;
@REPstatG0 = split / /, $REPstat[1];
$REPstatG0C1 = $REPstatG0[0];


print OUTPUT "<td valign=top><table><tbody><tr><th class=title>Replication Stats</th></tr><tr><td>\n";
print OUTPUT $REPstatG0C1;
print OUTPUT "</td></tr></table></td></tr></table></h2>\n";

rstat の出力は次のようになります。

Group          Remote Server      Local Done    Remote Done    Difference
0         drhost01_72                0              0
1         drhost01_72            7,582          7,582
2         drhost01_72      102,108,940    102,108,905            35
3         drhost01_72        5,584,312      5,584,312
4         drhost01_72       86,466,240     86,466,210            30
5         drhost01_72       22,898,028     22,898,028
6         drhost01_72            2,366          2,366
7         drhost01_72       53,106,257     53,106,236            21
8         drhost01_72    1,003,226,281  1,003,225,641           640

私がこれを行う場合:

print $REPstatG0C1;

期待どおりに次の結果が得られます。

0

出力ファイルは次のようになります。

</table></td><td valign=top><table><tbody><tr><th class=title>Replication Stats</th>
</tr><tr><td>
</td></tr></table></td></tr></table></h2>

REPstatG0C1 変数は明らかにスキップされており、2 行目にあるはずです。

関連する場合、私のファイルハンドラーは次のようになります。

open OUTPUT, ">index.html";

何か案は??

4

1 に答える 1

0

$REPstatG0C1文字列 が含まれている場合は0、末尾にキャリッジ リターンも含まれます。ファイルが端末にダンプされると、行の残りの部分でゼロが上書きされます。

$ perl -e'print "0\rabc\n"'
abc

これを確認するには、less

0^Mabc

またod -c

$ perl -e'print "0\rabc\n"' | od -c
0000000   0  \r   a   b   c  \n
0000006

"0\r"しかし、あなたがそのコードからどのように取得するのかわかりませんので、あなたの言ったことは真実ではないと思います. 何を調べれば、問題が見つかります。

于 2013-05-30T19:47:48.717 に答える