Отключение warnings в сценариях ключом в config-файле
Обычное дело - когда создаешь набор скриптов для веб-сайта, используешь повсюду прагму use warnings. Приходит время сдавать работу заказчику, прагма становится лишней (ну, скорее всего) - ибо нефиг захламлять лог-файл бессмысленными предупреждениями. Вообщем-то, не бог весь какая проблема, но когда много файлов сценариев - неприятно. Доверить массовую чистку внешним скриптом перед сдачей работы я не рекомендовал бы.. спать спокойней будешь.
Решение нашлось простое и элегантное. Итак, есть куча скриптов test1.cgi, test2.cgi,... В начале каждого из них не задумываясь вставляем:
В конце маленькое замечание - убедитесь, что ваш Configs.pl нельзя утащить браузером - там могут быть пароли. Впрочем, по-умолчанию сконфигурированный Апач не даст этого сделать.
Решение нашлось простое и элегантное. Итак, есть куча скриптов test1.cgi, test2.cgi,... В начале каждого из них не задумываясь вставляем:
#! /usr/bin/perl
use strict;
use warnings;
use CGI;
my $script = new CGI;
use Service;
use lib $LIB;В текущей директории вместе со скриптами храним сервисный файлик Service.pm примерно такого содержания: package Service;
BEGIN {
eval {
require 'Configs.pl';
unless ($Configs::debug) { $SIG{__WARN__} = sub {}; }
$DSN = 'DBI:mysql:' . $Configs::dbname . ':' . $Configs::dbhost;
$LOGIN = $Configs::login;
$PASSWD = $Configs::passwd;
$LIB = $Configs::lib;
}; $CFG_NOT_FOUND = ($@) ? 1 : 0;
use Exporter;
@ISA = qw(Exporter SelfLoader);
@EXPORT = qw($DSN $LOGIN $PASSWD $CFG_NOT_FOUND);
}
..................
1;Ну, и наконец, там же храним файл с конфигурацией наших скриптов - Configs.pl. В частности, в нем указываем ключ - выводить предупреждающую информацию или нет. package Configs;
BEGIN {
# Настроечные параметры системы
# при отладке этот параметр желательно
# оставить не нулевым
$debug = 0;
# ip-адрес или имя компьютера, на котором
# установлен MySQL
$dbhost = '127.0.0.1';
# имя базы данных
$dbname = '......';
$login = 'root';
$passwd = '.......';
# дополнительный путь к Perl-модулям на хостинге
$lib = '.'; #или '/home/vasya_pupkin/lib';
}
1;Вот, собственно, и всё. :) Если нужно включить вывод варнингов - ставим $debug=1, если выключить - 0. В конце маленькое замечание - убедитесь, что ваш Configs.pl нельзя утащить браузером - там могут быть пароли. Впрочем, по-умолчанию сконфигурированный Апач не даст этого сделать.
