токенизировать сообщение в perl - PullRequest
0 голосов
/ 25 февраля 2011

Я должен токенизировать сообщение FIX (Обмен финансовой информацией), чтобы пометить теги и значения с помощью Perl. У нас есть разные типы сообщений, такие как ExecutionReport, NewOrderSingle, CancelRequest. Сообщение в файле журнала выглядит следующим образом

2011-02-17 12: 01: 46,870 ИНФОРМАЦИЯ Отчет о выполнении (8 = FIX.4.29 = 33235 = 849 = ZZZ56 = XXXX34 = 455452 = 20110217-17: 01: 4650 = MCDV57 = kgs37 = 86669611 = 2732655.1876 = BBBB17 = 21728781020 = 0150 = 139 = 155 = HHHH3 8 = 444 US54 = 138 = 12000040 = 115 = USD59 = 032 = 10031 = 26.15151 = 11200014 = 80006 = 26.1472560 = 20110217-17: 01: 4658 = COT100 в 26,15 (долл. США) для ID заказа # 86669664 = 201102235847 = VVV10 = 221)

Я хочу разделить это сообщение как

  1. token1: тип сообщения (ExecutionReport)
  2. token2: фактическое сообщение ((8 = FIX4.2 .... 10 = 221)

как пропустить несколько начальных символов в сообщении (например, дату, время, ИНФО и т. Д.) И разбить это сообщение на две части, используя perl ...?

(Примечание: не запутайтесь, фактические данные разделены управляющим символом (^ A) .. здесь не видно)

Спасибо

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Вы можете попробовать использовать PFIX CPAN модуль

1 голос
/ 25 февраля 2011

Похоже, вы просто хотите разделить пробел, поэтому попробуйте что-то вроде этого:

my $logline = "2011-02-17 12:01:46,870 INFO ExecutionReport (8=FIX.4.29=3...";
my ($date, $time, $level, $type, $msg) = split(/\s+/, $logline, 5);

Теперь вы можете обрабатывать каждый токен отдельно, а переменные $type и $msg содержат два элемента, которые вы специально упомянули.

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