LINUX.ORG.RU

Подправить скрипт perl

 ,


0

1

Доброго времени суток, у 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, но вдруг мою задачу решить легко или кто то ее уже решил и есть решение.

Спасибо.



Последнее исправление: vsafonin (всего исправлений: 1)