Форматирование вывода с помощью Perl? - PullRequest
0 голосов
/ 06 июня 2011

Привет, ребята, здесь новичок в 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, возможно, разделенные табуляцией или запятой.

Может кто-нибудь помочь мне с этим? Я оглядывался по сторонам и возился с крохой и седом и тому подобным, но, похоже, не могу найти правильный способ для меня это сделать. В идеале я хотел бы иметь возможность запускать myscript.perl -cpu или myscript.pl -in, etcetc, чтобы возвращать только эти биты, но я думаю, что если кто-то может показать мне, как управлять выводом, я смогу выяснить остальное .

Спасибо!

Ответы [ 2 ]

3 голосов
/ 06 июня 2011

Вы можете использовать оператор подстановки (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 голосов
/ 06 июня 2011

Похоже, вы пытаетесь изменить формат вывода модулей.Лучший способ сделать это - вызвать его из другого скрипта, чтобы вы могли получить его в качестве входных данных, а затем изменить его по своему усмотрению.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+/,/;
...

Что-то в этом роде.Любой модуль, который не возвращает строку, разочаровывает, когда вам нужно соответствовать спецификации.Удачи все же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...