我无法将变量打印到文件中

时间:2013-05-30 19:19:29

标签: perl

我正在尝试将变量打印到文件(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";

任何想法??

1 个答案:

答案 0 :(得分: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",所以我相信你所说的不是真的。找出什么,你会发现你的问题。