Доброго времени суток, у 1сников есть скрипт:
#!/usr/bin/perl
use strict;
my $event;
my %actions = (
'CALL' => [
{
'action' => sub {
my ($event) =@_;
my ($date, $garbage) = split /,CALL/, $event;
$date =~ s/\d\d:\d\d\.\d+-//g;
my ($garbage, $context) = split /Context=/, $event;
my ($context, $garbage) = split /,Interface=/, $context;
if ($context =~ /\n/) {
my @mlc = split /\n/, $context;
$context = $mlc[$#mlc];
}
print "$date-$context\n" if $context;
},
},
],
);
print "\n";
while (<>) {
$event=process_event($event) if /^\d\d:\d\d\.\d+/;
$event .= $_;
}
sub process_event($) {
my ($event) = @_;
return unless $event;
foreach my $event_type ( keys %actions ) {
next unless $event =~ /^[^,]+,$event_type,/;
foreach my $issue ( @{ $actions{$event_type} }) {
&{$issue->{action}}($event);
}
}
}
На вход этому скрипту идет выхлоп cat rphost*/*.log
сам rphost содержит такой текст:
04:56.527000-94000,CALL,1,process=rphost,p:processName=Base1,OSThread=9600,t:clientID=1307,t:applicationName=WebServerExtension,t:computerName=1csrv,t:connectID=1570,callWait=0,Usr=User1,SessionID=3910,Context=Система.ПолучитьФорму : Документ.СдельныйНаряд.ФормаОбъекта,Interface=bc15bd01-10bf-413c-a856-ddc907fcd123,IName=IVResourceRemoteConnection,Method=0,CallID=42324,MName=send,Memory=12424,MemoryPeak=4312791,InBytes=0,OutBytes=0,CpuTime=93750
04:55.996005-16004,CALL,1,process=rphost,p:processName=Base1,OSThread=9600,t:clientID=1307,t:applicationName=WebServerExtension,t:computerName=1csrv,t:connectID=1570,callWait=0,Usr=USer2,SessionID=7599,Context=ОбщийМодуль.Вызов : ОбщийМодуль.СинхронизацияЭДОВызовСервера.Модуль.ЕстьСобытияЭДО,Interface=bc15bd01-10bf-413c-a856-ddc907fcd123,IName=IVResourceRemoteConnection,Method=0,CallID=42323,MName=send,Memory=-302,MemoryPeak=919172,InBytes=0,OutBytes=0,CpuTime=15625
Выхлоп скрипта такой:
37-ОбщийМодуль.Вызов : ОбщийМодуль.СинхронизацияЭДОВызовСервера.Модуль.ЕстьСобытияЭДО
94004-Система.ПолучитьФорму : Документ.СдельныйНаряд.ФормаОбъекта
Вопрос, как добавить в выхлоп скрипта вывод procesName=?
С perl совершенно не знаком, вообще не могу понять что к чему, мне проще переписать на python, но вдруг мою задачу решить легко или кто то ее уже решил и есть решение.
Спасибо.