使用perl格式化输出?

时间:2011-06-06 15:28:39

标签: perl

嘿伙计们,这里的perl菜鸟总数。我正在运行一个tf2服务器,我发现了一个简单的perl脚本,它可以回收它的统计数据。我需要编辑它的格式,以便仙人掌可以很好地读取它。 脚本是这样的:

use Rcon::HL2;

my $rcon = Rcon::HL2->new(
    hostname => "myserverhere",
    password => "omgawesomepassword",
);

当我运行它时,它会返回:

0CPU   In    Out   Uptime  Users   FPS    Players
0.00  0.00  0.00     514     9  956.02       0

最初,我希望它只输出数字 - 0.00 0.00 0.00 514 9 956.02 0,可能用制表符或逗号分隔。

任何人都可以帮我解决这个问题吗? 我环顾四周,弄乱切割和sed等等,但似乎找不到合适的方式来完成它。理想情况下,我希望能够运行myscript.perl -cpu或myscript.pl -in,etcetc来返回那些位,但我想如果有人能告诉我如何操作输出我可以弄清楚其余的

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以使用substitution operator (s///)用逗号替换所有空格,例如:

use warnings;
use strict;

my $out = '0.00  0.00  0.00     514     9  956.02       0';
$out =~ s/\s+/,/g;
print "$out\n";

__END__

0.00,0.00,0.00,514,9,956.02,0

答案 1 :(得分:0)

听起来您正在尝试更改模块输出格式。最好的方法是从另一个脚本调用它,这样你就可以将它作为输入,然后根据需要进行修改。 Perl有输出缓冲但它应该被称为输出缓存,因为它一旦创建它就不能真正修改流。

实施例。 - 内部rconhl2.pl

use Rcon::HL2;

my $rcon = Rcon::HL2->new(
    hostname => $ARGV[0],
    password => $ARGV[1],
);

...

实施例。 - 内部myscript.pl

...
$var = `perl rconhl2.pl $param1 $param2`;
$var =~ s/s+/,/;
...

这些方面的东西。当你需要满足规范时,任何不返回字符串的模块都会令人沮丧。祝你好运。