Имеется скрипт парсера
Код: sub parsecurcalls()
{
while($str=<PBX_DATA>)
{
$stringnumber++;
if($str =~ /^(\d{4})\/(\d{2})\/(\d{2})\s+(\d{2})\:(\d{2})\:(\d{2})\,(\d{2})\:(\d{2})\:(\d{2})\,(\d+)\,(\d*)\,(\w{1})\,([\w|\d|*|#]*)\,([\w|\d|*|#]*)\,([\w|\d]*)\,(\d+)\,(\d+)\,(\d+)\,([\w|\s|\d|.]+)\,([\w|\s|\d|.]+)\,([\w|\s|\d|.]+)\,([\w|\s|\d|.]+)\,(\d+)\,(\d+)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,([\w|\s|\d|.]*)\,([\w|\s|\d|.]*)\,(\d*)/)
{
print("$1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 $32 $33 $34 $35 $36 $37\n");
unitecurcalls();
}
else
{
print("$stringnumber\n");
if ($vars{debug} =~ /yes/i)
{
if ($str !~ /^$/)
{
print $str;
};
};
};
};
};
sub unitecurcalls()
{
my $calltype = $16;
my $callers_number = $11;
my $sent_number=$13;
my $colinenum = 0;
# 1.Запуск вызова YYYY-MM-DD HH:MM:SS
$timeofcall = "$1-$2-$3 $4:$5:$6";
# 3.Время звонка
$duration = (($7 * 3600) + ($8 * 60) + $9);
#11. Продолжительность.
$forwarded = $18; # 1 Если для этого ID вызова существуют другие записи, 0 в ином случае
# 9.Внутренний
if ($calltype = 1) {
return; # Внутренний вызов!
}
# Номер CO линии
if ($21=~(/T9(\d{3})/)) { # 14. Устройство абонента 2
$colinenum=$1;
}
# 5.Направление
if($12 =~ /O/) {
$way=2; # outgoing
$internally=$callers_number; # 4.Вызывающий абонент
$number=$sent_number; #6. Набираемый номер, Исходящие вызовы: Набранные цифры.
$co=$colinenum;
} else {
$way=1; # incoming
$internally=$callers_number; # 4.Вызывающий абонент
$number=$sent_number; #6. Набираемый номер, Входящие вызовы: Целевой добавочный номер для вызова.
$co=$colinenum;
}
if ($timeofcall ne "")
{
$callsCount++;
}
print("$timeofcall , $forwarded , $internally , $co , $way , $number , $duration\n");
WriteRecord($timeofcall, $forwarded, $internally, $co, $way, $number, $duration);
};
1;
Код: sub parsecurcalls()
{
while($str=<PBX_DATA>)
{
$stringnumber++;
if($str =~ /^(\d{4})\/(\d{2})\/(\d{2})\s+(\d{2})\:(\d{2})\:(\d{2})\,(\d{2})\:(\d{2})\:(\d{2})\,(\d+)\,(\d*)\,(\w{1})\,([\w|\d|*|#]*)\,([\w|\d|*|#]*)\,([\w|\d]*)\,(\d+)\,(\d+)\,(\d+)\,([\w|\s|\d|.]+)\,([\w|\s|\d|.]+)\,([\w|\s|\d|.]+)\,([\w|\s|\d|.]+)\,(\d+)\,(\d+)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,(\d*)\,([\w|\s|\d|.]*)\,([\w|\s|\d|.]*)\,(\d*)/)
{
print("$1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 $32 $33 $34 $35 $36 $37\n");
unitecurcalls();
}
else
{
print("$stringnumber\n");
if ($vars{debug} =~ /yes/i)
{
if ($str !~ /^$/)
{
print $str;
};
};
};
};
};
sub unitecurcalls()
{
my $calltype = $16;
my $callers_number = $11;
my $sent_number=$13;
my $colinenum = 0;
# 1.Запуск вызова YYYY-MM-DD HH:MM:SS
$timeofcall = "$1-$2-$3 $4:$5:$6";
# 3.Время звонка
$duration = (($7 * 3600) + ($8 * 60) + $9);
#11. Продолжительность.
$forwarded = $18; # 1 Если для этого ID вызова существуют другие записи, 0 в ином случае
# 9.Внутренний
if ($calltype = 1) {
return; # Внутренний вызов!
}
# Номер CO линии
if ($21=~(/T9(\d{3})/)) { # 14. Устройство абонента 2
$colinenum=$1;
}
# 5.Направление
if($12 =~ /O/) {
$way=2; # outgoing
$internally=$callers_number; # 4.Вызывающий абонент
$number=$sent_number; #6. Набираемый номер, Исходящие вызовы: Набранные цифры.
$co=$colinenum;
} else {
$way=1; # incoming
$internally=$callers_number; # 4.Вызывающий абонент
$number=$sent_number; #6. Набираемый номер, Входящие вызовы: Целевой добавочный номер для вызова.
$co=$colinenum;
}
if ($timeofcall ne "")
{
$callsCount++;
}
print("$timeofcall , $forwarded , $internally , $co , $way , $number , $duration\n");
WriteRecord($timeofcall, $forwarded, $internally, $co, $way, $number, $duration);
};
1;