2011-06-06 55 views
0

嘿家伙们,这里总perl的菜鸟。我正在运行一个tf2服务器,并且我有一个简单的perl脚本,我发现它拉回了它的统计数据。我需要编辑它的格式,以便仙人掌可以很好地读取它。 脚本是这样的:使用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来返回这些位,但我认为如果有人能告诉我如何操作输出,我可以找出其余的。

谢谢!

回答

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 
0

这听起来像你正试图改变一个模块的输出格式。最好的方法是从另一个脚本中调用它,以便可以将其作为输入,然后根据需要对其进行修改。 Perl有输出缓冲,但它可能应该称为输出缓存,因为它并不真正允许您在创建流之后修改它。

Ex。 - 内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+/,/; 
... 

类似的规定。当你需要符合规范时,任何不返回字符串的模块都会令人沮丧。祝你好运。