народ, не могу разобраться с парсеров в mysql ((( есть лог фаил(входящие\исходящие звонки с атски), из него при помощи парсера создается массив, далее в другом скрипте из массива инфа попадает в переменные, потом в ячейки мускуля, одна из переменных никак не хочет лезть в мускуль... вот что в мускуле mysql> select * from calls; +---------------------+-----------+------------+------+------+-------------+----------+-------+ | timeofcall | forwarded | internally | co | way | number | duration | cost | +---------------------+-----------+------------+------+------+-------------+----------+-------+ | 0000-00-00 00:00:00 | 0 | 301 | 2 | 1 | 623 | 17 | 0.000 | | 0000-00-00 00:00:00 | 1 | 305 | 1 | 1 | 0 | 155 | 0.000 | | 0000-00-00 00:00:00 | 0 | 624 | 1 | 1 | 624 | 0 | 0.000 | | 0000-00-00 00:00:00 | 0 | 624 | 1 | 1 | 624 | 0 | 0.000 | | 0000-00-00 00:00:00 | 0 | 152 | 1 | 1 | 624 | 22 | 0.000 | | 0000-00-00 00:00:00 | 0 | 114 | 2 | 1 | 622 | 24 | 0.000 | | 0000-00-00 00:00:00 | 0 | 301 | 1 | 1 | 624 | 226 | 0.000 | | 0000-00-00 00:00:00 | 0 | 114 | 1 | 1 | 622 | 8 | 0.000 | | 0000-00-00 00:00:00 | 0 | 301 | 20 | 2 | 3320213 | 0 | 0.000 | все верно кроме 0000-00-00 00:00:00 лог фаил ---- Site Name : BEREGKI --------------------------------------------------------------- NO STA CO TIME START DIALED ACT CNT COST ACCOUNT CODE ---- ----- --- -------- -------------- ------------------- --- ----- ----------- ------------ 3609 233 002 00:00:07 04/14/10 16:13 I625 RING 00:09 3608 111 001 00:02:36 04/14/10 16:12 I625 RING 00:02 3610 111 001 00:01:12 04/14/10 16:16 I625 RING 00:02 3611 114 001 00:00:11 04/14/10 16:23 I622 RING 00:08 3612 111 025 00:00:40 04/14/10 16:23 O3320213 ** 0 0 3613 111 001 00:01:02 04/14/10 16:25 I625 RING 00:01 3614 114 001 00:00:11 04/14/10 16:33 I622 RING 00:06 3615 111 024 00:01:25 04/14/10 16:35 O3320289 ** 0 0 парсер sub parsecurcalls() { while ($str=<PBX_DATA>) { $stringNumber++; if ($str =~ /(\d{4}) (.{5}) (\d{3}) (\d{2}:\d{2}:\d{2}) (\d{2}\/\d{2}\/\d{2}) (\d{2}:\d{2}) (.{20}) (.{2}) (.{5}) (.{11}) (.{12})/){ unitecurcalls(); }else{ #print("$stringNumber\n"); if ($vars{debug} =~ /yes/i){ if ($str !~ /^$/){ print $str; }; }; }; }; }; sub unitecurcalls() { my $no=$1; my $sta=$2; my $co=$3; my $call_duration=$4; my $date=$5; my $time=$6; my $dialed_number=$7; my $act=$8; my $cnt=$9; my $cost=$10; my $account_code=$11; $co=int($co); $forwarded=0; if ($dialed_number=~/(\d+)/) { $number=$1; } else { $number=0; } if($dialed_number =~ /^[IG]/){ $way='1'; $forwarded=0; } elsif($dialed_number =~ /^O/){ $way='2'; $forwarded=0; } elsif($dialed_number =~ /^T/){ $way='2'; $forwarded=1; } elsif($dialed_number =~ /^t/){ $way='1'; $forwarded=1; } if ($date=~(/(\d{2})\/(\d{2})\/(\d{2})/)) { $Month=$2; $Day=$1; $Year=$3+2000; $timeofcall = "$Year-$Month-$Day $time:00"; } if ($call_duration=~(/(\d{2})\d{2})\d{2})/)) { $duration = (($1*60*60)+($2*60)+$3); } if ($TimeOfCall ne ""){ $callsCount++; } my $internally=int($sta); #print("$timeofcall, $forwarded, $internally, $co, $way, $number, $duration\n"); WriteRecord($timeofcall, $forwarded, $internally, $co, $way, $number, $duration); }; 1; процедура записи в мускуль sub WriteRecord{ my ($time_of_call, $fwd, $int, $co, $way, $number, $duration) = @_ ; ##$time_of_call="2010-02-03 10:10:10"; my $query = "INSERT INTO calls ( timeofcall, forwarded, internally, co, way, number, duration ) VALUES (?, ?, ?, ?, ?, ?, ?)"; my $sth = $dbh->prepare($query); $sth->execute($time_of_call, $fwd, $int, $co, $way, $number, $duration); if($sth->err){ # try to reconnect and send the query again $ERRORMESSAGE="\nError on sth->execute: ".$sth->errstr().", reconnecting\n"; echoerrors(); if(connecttodb()){ my $sth = $dbh->prepare($query); $sth->execute($time_of_call, $fwd, $int, $co, $way, $number, $duration); if(!$sth->err) { # success return 0; } } если сделать так $time_of_call="2010-02-03 10:10:10"; то в мускуль все нормально пишется, ну в смысле чтото отличное от нулей ) в принципе руководству нужна статистика по дням , а когда именно - утром днем или вечером совершался звонок не принципиально, и я думаю на худой конец можно своять скрипт который будет останавливать atslog менять дату в этой строке, сохранять фаил и запускать atslog, вариант изощренный но других пока не вижу. у кого есть какие нибуть идеи ?