Как переделать скрипт для модуля p5-DBD-mysql51

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-01-18 17:02:45

я использую скрипт для подсчета трафика с помощю Ipacctd взятый с этого сайта,

Код: Выделить всё

#!/usr/bin/perl -w

# вводим переменные
# MySQL - хост где БД
$db_host = 'localhost';
# MySQL юзер
$db_user = 'ipacctd';
# MySQL пароль
$db_password = 'ipacctd';
# MySQL база данных
$db_database = 'ipacctd';
# подрубаем модуль для работы с MySQL
use Mysql;
# время - тока чтоб год достать...
use Time::localtime;

# достаём время
# Год
$year = localtime->year() + 1900;
# Месяц (идиотский язык, чтобы достать месяц в виде
# двузначного числа приходиться изгаляться через жопу...)
# Если знаете способ лучше - подскажите, поменяю...
$month = `date '+%m'`;
$month = substr($month,0,2);

# Коннектимся к MySQL
$dbh = Mysql->Connect($db_host,$db_database,$db_user,$db_password);

# Вызываем внешние программы по сохранению траффика
system("killall -1 ipacctd && sleep 2");

#use strict;
if(open(RC_CONF,"/etc/rc.conf")){
my @data = reverse <RC_CONF>;
chomp @data;
close RC_CONF;
foreach my $str (@data)
    {
    # разбираем rc.conf
    next if $str =~ /^#/ or $str =~ /^\s*$/;
    $str =~ /^\s+/;
    $str =~ /\s+$/;
    my($var_name,$var_value) = split(/=/, $str);
    if($var_name eq 'ipacctd_rules')
        {
        $var_value =~ s#^\s*(['"]?)(.*)\1#$2#;
        foreach my $interface (split (/\s+/, $var_value))
            {
            # шуршим по интерфейсам
            # Создаём таблицу для постоянного хранения траффика
            # строим кверю к MySQL
$MySQL_query = "CREATE TABLE IF NOT EXISTS `" . $interface . "_" . $year . "`(
            `unic_id` INT(16) NOT NULL auto_increment,
            `date` DATE NOT NULL,
            `time` TIME NOT NULL,
            `unix_time` INT(12) NOT NULL,
            `from_IP` CHAR(16) NOT NULL,
            `port_from_IP` INT(8) NOT NULL,
            `to_IP` CHAR(16) NOT NULL,
            `port_to_IP` INT(8) NOT NULL,
            `protocol` CHAR(12) NOT NULL,
            `bytes` INT(16) NOT NULL,
            `paketov` INT(8) NOT NULL,
            PRIMARY KEY (`unic_id`),
            KEY `date`(`date`),
            KEY `unix_time`(`unix_time`)
            ) ENGINE=MyISAM COMMENT='Traffic for " . $interface . "-interface'";
            # Делаем запрос к БД, если неудачный - помираем с ошибкой
            $dbh->Query("$MySQL_query") or die $Mysql::db_errstr;
            # строим путь к файлу с траффиком
            $file_path = "/var/log/traffic_" . $interface . ".log";
            # открываем файло
            open TRAFFIC,"$file_path";
            # Разбираем построчно
            while (<TRAFFIC>)
                {
                # убираем лишние пробелы
                #tr/\s+/ /s;
                # Разбиваем по пробелам на переменные
                ($from_IP,$port_from_IP,$to_IP,$port_to_IP,$protocol,
                $bytes,$paketov) = split(/\s+/,$_);
                # пихаем траффик в БД

                $MySQL_query = "INSERT INTO `" . $interface . "_" . $year . "`
                (`date`,`time`,`unix_time`,`from_IP`,`port_from_IP`,`to_IP`,
                `port_to_IP`,`protocol`,`bytes`,`paketov`) VALUES (DATE(NOW()),
                TIME(NOW()),UNIX_TIMESTAMP(),'" . $from_IP . "',
                '" . $port_from_IP . "','" . $to_IP . "','" . $port_to_IP . "',
                '" . $protocol . "','" . $bytes . "','" . $paketov . "')";
                # Делаем запрос к БД, если неудачный - помираем с ошибкой
                $dbh->Query("$MySQL_query") or die $Mysql::db_errstr;
                }
            # создаём директории
            system("mkdir -p /var/traffic/" . $year . "/" . $month);
            # переносим траффик
            $otkuda = "/var/log/traffic_" . $interface . ".log";
        $kuda = "/var/traffic/" . $year . "/" . $month . "/summary." . $interface;
            system("cat $otkuda >> $kuda");
            # очищаем файло
            system("cat /dev/null > $otkuda");


            # создаём таблицу, где будет храниться траффик

            }
        }
    }
}

# выходим
1;
но я поставил psychostats для Counter-Strike, а ево скрипт требует модуль p5-DBD-mysql51, но получилса конфликт с модулем Mysql, который использует скрипт для подсчета трафика,
по гуглив я сделал изменения
use DBI;
$drh = DBI->install_driver('mysql');
$dbh = $drh->connect($db_host,$db_database,$db_user,$db_password);
но викадывает ошыбку:
Can't use string ("ipacctd") as a HASH ref while "strict refs" in use at /usr/local/lib/perl5/site_perl/5.8.8/mach/DBD/mysql.pm line 117.
Подскажыте как правильно переделать этот скрипт.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение zingel » 2009-02-13 7:36:54

правильне - обновить DBD
Z301171463546 - можно пожертвовать мне денег

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-13 16:14:56

Обновил с помощю portugrade
p5-DBD-mysql51-4.006 MySQL 5.1 driver for the Perl5 Database Interface (DBI)
p5-DBI-1.60.7 The perl5 Database Interface. Required for DBD::* modules
не помогло

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение ProFTP » 2009-02-13 16:59:36

s/use Mysql;/use DBI;/g
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-13 20:33:33

можно немножко подробние описать што за чем, добавить это в скрипт? пробывал пишет синтакс эрор

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение ProFTP » 2009-02-13 20:55:17

замени

Код: Выделить всё

use Mysql;
на

Код: Выделить всё

use DBI;
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение ProFTP » 2009-02-13 21:19:58

я не дочитал

попробуй так

Код: Выделить всё

#!/usr/bin/perl
и какая ошибка будет?

потом так

Код: Выделить всё

#!/usr/bin/perl 

use strict;
наифига ты это

Код: Выделить всё

$drh = DBI->install_driver('mysql');
поставил?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-13 22:45:02

наифига ты это
ProFTP писал(а):

Код: Выделить всё

$drh = DBI->install_driver('mysql');
поставил?
потомушто выдавало Can't locate object method "Connect" via package "Mysql" at ./script2 line 27. это как раз эта строка по гуглив нашол што нужно DBI писать и єта ошыбка исчезла.
ProFTP писал(а):я не дочитал

попробуй так

Код: Выделить всё

#!/usr/bin/perl
и какая ошибка будет?
тоже самое
ProFTP писал(а): потом так

Код: Выделить всё

#!/usr/bin/perl 

use strict;
Сделал

Код: Выделить всё

#!/usr/bin/perl 
$db_host = 'localhost';
$db_user = 'ipacctd';
$db_password = 'ipacctd';
$db_database = 'ipacctd';
use DBI;
use strict;
use Time::localtime;
$year = localtime->year() + 1900;
$month = `date '+%m'`;
$month = substr($month,0,2);
$drh = DBI->install_driver('mysql');
$dbh = $drh->connect($db_host,$db_database,$db_user,$db_password);
ошыбка

Код: Выделить всё

Variable "$db_host" is not imported at ./dbiscript line 31.
Variable "$db_database" is not imported at ./dbiscript line 31.
Variable "$db_user" is not imported at ./dbiscript line 31.
Variable "$db_password" is not imported at ./dbiscript line 31.
Global symbol "$year" requires explicit package name at ./dbiscript line 20.
Global symbol "$month" requires explicit package name at ./dbiscript line 24.
Global symbol "$month" requires explicit package name at ./dbiscript line 25.
Global symbol "$month" requires explicit package name at ./dbiscript line 25.
Global symbol "$drh" requires explicit package name at ./dbiscript line 30.
Global symbol "$dbh" requires explicit package name at ./dbiscript line 31.
Global symbol "$drh" requires explicit package name at ./dbiscript line 31.
Global symbol "$db_host" requires explicit package name at ./dbiscript line 31.
Global symbol "$db_database" requires explicit package name at ./dbiscript line 31.
Global symbol "$db_user" requires explicit package name at ./dbiscript line 31.
Global symbol "$db_password" requires explicit package name at ./dbiscript line 31.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 55.
Global symbol "$year" requires explicit package name at ./dbiscript line 55.
Global symbol "$dbh" requires explicit package name at ./dbiscript line 72.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 72.
Global symbol "$file_path" requires explicit package name at ./dbiscript line 74.
Global symbol "$file_path" requires explicit package name at ./dbiscript line 76.
Global symbol "$from_IP" requires explicit package name at ./dbiscript line 83.
Global symbol "$port_from_IP" requires explicit package name at ./dbiscript line 83.
Global symbol "$to_IP" requires explicit package name at ./dbiscript line 83.
Global symbol "$port_to_IP" requires explicit package name at ./dbiscript line 83.
Global symbol "$protocol" requires explicit package name at ./dbiscript line 83.
Global symbol "$bytes" requires explicit package name at ./dbiscript line 84.
Global symbol "$paketov" requires explicit package name at ./dbiscript line 84.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 87.
Global symbol "$year" requires explicit package name at ./dbiscript line 87.
Global symbol "$from_IP" requires explicit package name at ./dbiscript line 90.
Global symbol "$port_from_IP" requires explicit package name at ./dbiscript line 91.
Global symbol "$to_IP" requires explicit package name at ./dbiscript line 91.
Global symbol "$port_to_IP" requires explicit package name at ./dbiscript line 91.
Global symbol "$protocol" requires explicit package name at ./dbiscript line 92.
Global symbol "$bytes" requires explicit package name at ./dbiscript line 92.
Global symbol "$paketov" requires explicit package name at ./dbiscript line 92.
Global symbol "$dbh" requires explicit package name at ./dbiscript line 94.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 94.
Global symbol "$year" requires explicit package name at ./dbiscript line 97.
Global symbol "$month" requires explicit package name at ./dbiscript line 97.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 99.
Global symbol "$kuda" requires explicit package name at ./dbiscript line 100.
Global symbol "$year" requires explicit package name at ./dbiscript line 100.
Global symbol "$month" requires explicit package name at ./dbiscript line 100.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 101.
Global symbol "$kuda" requires explicit package name at ./dbiscript line 101.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 103.
Execution of ./dbiscript aborted due to compilation errors.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение ProFTP » 2009-02-14 1:49:43

хорошой стиль программирование - это объявить все переменные..

а что это делает?
$drh = DBI->install_driver('mysql');

так а куда оно ругается? mysql стоит? какая версию? может ты криво поставил... поробуй удали субд и поставь этот модуль... p5-DBD-mysql51
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-14 13:57:12

Ругаєтса потомушто для другого модуля написан этот скрипт, он написан для модуля p5-Mysql, а я єтот модуль снес и поставил p5-DBD-mysql51 потомушто другой скрипт написан под этот модуль и не хотел работать на p5-Mysql, а эти два модуля не могут быть одновременно пишет конфликт, как их подружить? думал скрипт под DBD DBI модуль кто поможет переделать. Потомушто Скрипт корторый считает статистику для Psychostats сервакак контры нормально работает когда поставил для нево DBD DBI модуль.

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение thefree » 2009-02-14 16:27:32

арг perl это религия где основные аспекты (-w, use strict;)

Попробуйти сначала

Код: Выделить всё

#!/usr/bin/perl -w

use strict;
use DBI;

my $dbh = DBI->connect("DBI:mysql:test_database", "mysql_user","mysql_password") or die "Error connecting to base\n";
print "ok\n" if $dhb;
и скажити что выведит ...
в консоли и какая верся perl
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение ProFTP » 2009-02-14 20:14:13

thefree писал(а):арг perl это религия где основные аспекты (-w, use strict;)
-w не всегджа подхождит, он может ругатся на всё что угодно, естественно там где очень кривой алгоритм там будет ругатся, но от "утечек памяти" этот ключ -w не спасает, его использовать - это трата времени
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение zg » 2009-02-14 20:21:09

гм.. а на кой тут вообще нужен перл?

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение thefree » 2009-02-14 22:32:57

ProFTP писал(а):
thefree писал(а):арг perl это религия где основные аспекты (-w, use strict;)
-w не всегджа подхождит, он может ругатся на всё что угодно, естественно там где очень кривой алгоритм там будет ругатся, но от "утечек памяти" этот ключ -w не спасает, его использовать - это трата времени
хм, а про утечки памяти никто не говорит ... использую исключительно для отладки ...
проблема сама в запросе

Код: Выделить всё

 # Делаем запрос к БД, если неудачный - помираем с ошибкой
            $dbh->Query("$MySQL_query") or die $Mysql::db_errstr;
DBD же

Код: Выделить всё

my $sql = $db->prepare("select id, name, orgname, year, type, country, directed, actor, img from films $search");
$sql->execute();
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-17 1:26:39

thefree писал(а):арг perl это религия где основные аспекты (-w, use strict;)

Попробуйти сначала

Код: Выделить всё

#!/usr/bin/perl -w

use strict;
use DBI;

my $dbh = DBI->connect("DBI:mysql:test_database", "mysql_user","mysql_password") or die "Error connecting to base\n";
print "ok\n" if $dhb;
и скажити что выведит ...
в консоли и какая верся perl
сделал

Код: Выделить всё

$db_host = 'localhost';
$db_user = 'ipacctd';
$db_password = 'ipacctd';
$db_database = 'ipacctd';
use strict;
use DBI;
use Time::localtime;
$year = localtime->year() + 1900;
$month = `date '+%m'`;
$month = substr($month,0,2);
$drh = DBI->install_driver('mysql');
my $dbh = DBI->connect("DBI:mysql:test_database", "mysql_user","mysql_password") or die "Error connecting to base\n";
print "ok\n" if $dhb;
дале ниче не менял вот ошыбка

Код: Выделить всё

Global symbol "$year" requires explicit package name at ./dbiscript line 21.
Global symbol "$month" requires explicit package name at ./dbiscript line 25.
Global symbol "$month" requires explicit package name at ./dbiscript line 26.
Global symbol "$month" requires explicit package name at ./dbiscript line 26.
Global symbol "$drh" requires explicit package name at ./dbiscript line 31.
Global symbol "$dhb" requires explicit package name at ./dbiscript line 34.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 59.
Global symbol "$year" requires explicit package name at ./dbiscript line 59.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 76.
Global symbol "$file_path" requires explicit package name at ./dbiscript line 78.
Global symbol "$file_path" requires explicit package name at ./dbiscript line 80.
Global symbol "$from_IP" requires explicit package name at ./dbiscript line 87.
Global symbol "$port_from_IP" requires explicit package name at ./dbiscript line 87.
Global symbol "$to_IP" requires explicit package name at ./dbiscript line 87.
Global symbol "$port_to_IP" requires explicit package name at ./dbiscript line 87.
Global symbol "$protocol" requires explicit package name at ./dbiscript line 87.
Global symbol "$bytes" requires explicit package name at ./dbiscript line 88.
Global symbol "$paketov" requires explicit package name at ./dbiscript line 88.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 91.
Global symbol "$year" requires explicit package name at ./dbiscript line 91.
Global symbol "$from_IP" requires explicit package name at ./dbiscript line 94.
Global symbol "$port_from_IP" requires explicit package name at ./dbiscript line 95.
Global symbol "$to_IP" requires explicit package name at ./dbiscript line 95.
Global symbol "$port_to_IP" requires explicit package name at ./dbiscript line 95.
Global symbol "$protocol" requires explicit package name at ./dbiscript line 96.
Global symbol "$bytes" requires explicit package name at ./dbiscript line 96.
Global symbol "$paketov" requires explicit package name at ./dbiscript line 96.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 98.
Global symbol "$year" requires explicit package name at ./dbiscript line 103.
Global symbol "$month" requires explicit package name at ./dbiscript line 103.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 105.
Global symbol "$kuda" requires explicit package name at ./dbiscript line 106.
Global symbol "$year" requires explicit package name at ./dbiscript line 106.
Global symbol "$month" requires explicit package name at ./dbiscript line 106.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 107.
Global symbol "$kuda" requires explicit package name at ./dbiscript line 107.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 109.
Execution of ./dbiscript aborted due to compilation errors.
без use strict;

Код: Выделить всё

Name "main::db_host" used only once: possible typo at ./dbiscript line 5.
Name "main::db_database" used only once: possible typo at ./dbiscript line 11.
Name "main::db_user" used only once: possible typo at ./dbiscript line 7.
Name "main::drh" used only once: possible typo at ./dbiscript line 31.
Name "main::db_password" used only once: possible typo at ./dbiscript line 9.
Name "main::dhb" used only once: possible typo at ./dbiscript line 34.
DBI connect('test_database','mysql_user',...) failed: Access denied for user 'mysql_user'@'localhost' (using password: YES) at ./dbiscript line 33
Error connecting to base

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-17 1:43:58

thefree писал(а):
ProFTP писал(а):
thefree писал(а):арг perl это религия где основные аспекты (-w, use strict;)
-w не всегджа подхождит, он может ругатся на всё что угодно, естественно там где очень кривой алгоритм там будет ругатся, но от "утечек памяти" этот ключ -w не спасает, его использовать - это трата времени
хм, а про утечки памяти никто не говорит ... использую исключительно для отладки ...
проблема сама в запросе

Код: Выделить всё

 # Делаем запрос к БД, если неудачный - помираем с ошибкой
            $dbh->Query("$MySQL_query") or die $Mysql::db_errstr;
DBD же

Код: Выделить всё

my $sql = $db->prepare("select id, name, orgname, year, type, country, directed, actor, img from films $search");
$sql->execute();
Ну если шапку оставить а изменить только єту $dbh->Query("$MySQL_query") or die $Mysql::db_errstr; на my $sql = $db->prepare("select id, name, orgname, year, type, country, directed, actor, img from films $search");
$sql->execute();
то с use strict;

Код: Выделить всё

Variable "$db_host" is not imported at ./dbiscript line 32.
Variable "$db_database" is not imported at ./dbiscript line 32.
Variable "$db_user" is not imported at ./dbiscript line 32.
Variable "$db_password" is not imported at ./dbiscript line 32.
Global symbol "$year" requires explicit package name at ./dbiscript line 21.
Global symbol "$month" requires explicit package name at ./dbiscript line 25.
Global symbol "$month" requires explicit package name at ./dbiscript line 26.
Global symbol "$month" requires explicit package name at ./dbiscript line 26.
Global symbol "$drh" requires explicit package name at ./dbiscript line 31.
Global symbol "$dbh" requires explicit package name at ./dbiscript line 32.
Global symbol "$drh" requires explicit package name at ./dbiscript line 32.
Global symbol "$db_host" requires explicit package name at ./dbiscript line 32.
Global symbol "$db_database" requires explicit package name at ./dbiscript line 32.
Global symbol "$db_user" requires explicit package name at ./dbiscript line 32.
Global symbol "$db_password" requires explicit package name at ./dbiscript line 32.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 59.
Global symbol "$year" requires explicit package name at ./dbiscript line 59.
Global symbol "$dbh" requires explicit package name at ./dbiscript line 76.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 76.
Global symbol "$file_path" requires explicit package name at ./dbiscript line 78.
Global symbol "$file_path" requires explicit package name at ./dbiscript line 80.
Global symbol "$from_IP" requires explicit package name at ./dbiscript line 87.
Global symbol "$port_from_IP" requires explicit package name at ./dbiscript line 87.
Global symbol "$to_IP" requires explicit package name at ./dbiscript line 87.
Global symbol "$port_to_IP" requires explicit package name at ./dbiscript line 87.
Global symbol "$protocol" requires explicit package name at ./dbiscript line 87.
Global symbol "$bytes" requires explicit package name at ./dbiscript line 88.
Global symbol "$paketov" requires explicit package name at ./dbiscript line 88.
Global symbol "$MySQL_query" requires explicit package name at ./dbiscript line 91.
Global symbol "$year" requires explicit package name at ./dbiscript line 91.
Global symbol "$from_IP" requires explicit package name at ./dbiscript line 94.
Global symbol "$port_from_IP" requires explicit package name at ./dbiscript line 95.
Global symbol "$to_IP" requires explicit package name at ./dbiscript line 95.
Global symbol "$port_to_IP" requires explicit package name at ./dbiscript line 95.
Global symbol "$protocol" requires explicit package name at ./dbiscript line 96.
Global symbol "$bytes" requires explicit package name at ./dbiscript line 96.
Global symbol "$paketov" requires explicit package name at ./dbiscript line 96.
Global symbol "$db" requires explicit package name at ./dbiscript line 99.
Global symbol "$search" requires explicit package name at ./dbiscript line 99.
Global symbol "$year" requires explicit package name at ./dbiscript line 103.
Global symbol "$month" requires explicit package name at ./dbiscript line 103.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 105.
Global symbol "$kuda" requires explicit package name at ./dbiscript line 106.
Global symbol "$year" requires explicit package name at ./dbiscript line 106.
Global symbol "$month" requires explicit package name at ./dbiscript line 106.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 107.
Global symbol "$kuda" requires explicit package name at ./dbiscript line 107.
Global symbol "$otkuda" requires explicit package name at ./dbiscript line 109.
Execution of ./dbiscript aborted due to compilation errors.
без use strict;

Код: Выделить всё

Name "main::db" used only once: possible typo at ./dbiscript line 99.
Name "main::search" used only once: possible typo at ./dbiscript line 99.
Name "Mysql::db_errstr" used only once: possible typo at ./dbiscript line 76.
Can't use string ("ipacctd") as a HASH ref while "strict refs" in use at /usr/local/lib/perl5/site_perl/5.8.8/mach/DBD/mysql.pm line 117.
Вобщем я совсєм запуталса может я чо не так понял, пожалуйста тогда напишы по порядку какие строки нужно поправить.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение ProFTP » 2009-02-17 2:39:56

что такое в стркоа 32. ?

убери вот это $drh = DBI->install_driver('mysql');

http://search.cpan.org/~timb/DBI-1.607/DBI.pm
http://search.cpan.org/~capttofu/DBD-my ... D/mysql.pm

поробуй включить трасировку (отладку), но ты что-то напутал

http://search.cpan.org/~timb/DBI-1.607/DBI.pm#trace
http://search.cpan.org/~timb/DBI-1.607/DBI.pm#TRACING
http://search.cpan.org/~timb/DBI-1.607/DBI.pm#trace_msg

попингуй
http://search.cpan.org/~timb/DBI-1.607/DBI.pm#ping
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение thefree » 2009-02-17 9:42:43

что нам стоит дом построить ...

Проста запусти скрипт.

Код: Выделить всё

#!/usr/bin/perl -w

use strict;
use DBI;

#config for mysql
my $db_host = 'localhost';
my $db_user = 'ipacctd';
my $db_password = 'ipacctd';
my $db_database = 'ipacctd';

#make session for localhost mysql
my $dbh = DBI->connect("DBI:mysql:".$db_database.":".$db_host, $db_user, $db_password) or die "$DBI::errstr\n";
print "ok\n" if $dhb;
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-19 0:40:15

Непомогло

Код: Выделить всё

Global symbol "$db_host" requires explicit package name at ./script2 line 9.
Global symbol "$db_user" requires explicit package name at ./script2 line 11.
Global symbol "$db_password" requires explicit package name at ./script2 line 13.
Global symbol "$db_database" requires explicit package name at ./script2 line 15.
Global symbol "$year" requires explicit package name at ./script2 line 20.
Global symbol "$month" requires explicit package name at ./script2 line 24.
Global symbol "$month" requires explicit package name at ./script2 line 25.
Global symbol "$month" requires explicit package name at ./script2 line 25.
Global symbol "$db_database" requires explicit package name at ./script2 line 28.
Global symbol "$db_host" requires explicit package name at ./script2 line 28.
Global symbol "$db_user" requires explicit package name at ./script2 line 28.
Global symbol "$db_password" requires explicit package name at ./script2 line 28.
Global symbol "$dhb" requires explicit package name at ./script2 line 29.
Global symbol "$MySQL_query" requires explicit package name at ./script2 line 54.
Global symbol "$year" requires explicit package name at ./script2 line 54.
Global symbol "$MySQL_query" requires explicit package name at ./script2 line 71.
Global symbol "$file_path" requires explicit package name at ./script2 line 73.
Global symbol "$file_path" requires explicit package name at ./script2 line 75.
Global symbol "$from_IP" requires explicit package name at ./script2 line 82.
Global symbol "$port_from_IP" requires explicit package name at ./script2 line 82.
Global symbol "$to_IP" requires explicit package name at ./script2 line 82.
Global symbol "$port_to_IP" requires explicit package name at ./script2 line 82.
Global symbol "$protocol" requires explicit package name at ./script2 line 82.
Global symbol "$bytes" requires explicit package name at ./script2 line 83.
Global symbol "$paketov" requires explicit package name at ./script2 line 83.
Global symbol "$MySQL_query" requires explicit package name at ./script2 line 86.
Global symbol "$year" requires explicit package name at ./script2 line 86.
Global symbol "$from_IP" requires explicit package name at ./script2 line 89.
Global symbol "$port_from_IP" requires explicit package name at ./script2 line 90.
Global symbol "$to_IP" requires explicit package name at ./script2 line 90.
Global symbol "$port_to_IP" requires explicit package name at ./script2 line 90.
Global symbol "$protocol" requires explicit package name at ./script2 line 91.
Global symbol "$bytes" requires explicit package name at ./script2 line 91.
Global symbol "$paketov" requires explicit package name at ./script2 line 91.
Global symbol "$MySQL_query" requires explicit package name at ./script2 line 93.
Global symbol "$year" requires explicit package name at ./script2 line 96.
Global symbol "$month" requires explicit package name at ./script2 line 96.
Global symbol "$otkuda" requires explicit package name at ./script2 line 98.
Global symbol "$kuda" requires explicit package name at ./script2 line 99.
Global symbol "$year" requires explicit package name at ./script2 line 99.
Global symbol "$month" requires explicit package name at ./script2 line 99.
Global symbol "$otkuda" requires explicit package name at ./script2 line 100.
Global symbol "$kuda" requires explicit package name at ./script2 line 100.
Global symbol "$otkuda" requires explicit package name at ./script2 line 102.
Execution of ./script2 aborted due to compilation errors.

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение thefree » 2009-02-19 9:58:28

Аргх, проста создай новый фаил вставь в него те строки, что я дал сверху. И выполни его.
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-20 1:13:25

Код: Выделить всё

Global symbol "$dhb" requires explicit package name at ./1234test line 14.
Execution of ./1234test aborted due to compilation errors.
скопировал вот што пишет

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение ProFTP » 2009-02-20 4:35:09

Код: Выделить всё

print "ok\n" if $dbh;
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение thefree » 2009-02-20 12:46:13

ProFTP писал(а):

Код: Выделить всё

print "ok\n" if $dbh;
очепятка
BaHJa писал(а):

Код: Выделить всё

Global symbol "$dhb" requires explicit package name at ./1234test line 14.
Execution of ./1234test aborted due to compilation errors.
скопировал вот што пишет
1. модуль у Вас работает нормально.
2. Вам надо переписать полность. весь скрипт с использованием функция от модуля DBD ( http://search.cpan.org/~capttofu/DBD-my ... D/mysql.pm )
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
BaHJa
ефрейтор
Сообщения: 61
Зарегистрирован: 2008-08-17 18:56:14
Откуда: Ukraine, Ternopil
Контактная информация:

Re: Как переделать скрипт для модуля p5-DBD-mysql51

Непрочитанное сообщение BaHJa » 2009-02-21 1:07:47

ок, спс попробую