|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Pavel Ammosov 2:5020/52 30 Jul 2001 14:43:29 To : Al Zaharov Subject : Re: посмотрите, плз, скрипт (рабочий), что с ним не так? -------------------------------------------------------------------------------- AZ>#!/usr/bin/perl -w AZ>require 5.004; AZ>use locale; AZ>use POSIX qw (locale_h); AZ>use CGI qw (:standard); AZ>use strict; AZ>&main; AZ>sub main { AZ>$main::fetchipac = "/usr/local/sbin/fetchipac"; тут будут проблемы, если станешь запускать из под Apache::Registry (mod_perl). Выбрось $main:: и перепиши это в виде use vars qw(%cfg); $cfg{'fetchipac'} = "/usr/local/sbin/fetchipac"; $cfg{'ipacsum'} = "/usr/local/sbin/ipacsum"; ... AZ>$main::fetchipac_options = ""; AZ>$main::ipacsum = "/usr/local/sbin/ipacsum"; AZ>###### There are no user adjustable parameters below this line ####### AZ>####################################################################### AZ>my $now = time(); AZ>$main::me = $0; AZ>$main::me =~ s|^.*/([^/]+)$|$1|; AZ># calculate time zone offset in seconds - use difference of output of date AZ># command and time function, round it AZ>$main::tzoffset = 0; # ! makeunixtime needs this! AZ>$main::tzoffset = int( ($now-makeunixtime(`date +"%Y%m%d%H%M%S"`)) / 60) *60; `date` давить. perldoc -f time, perldoc -f localtime, man POSIX, искать strftime. AZ>if ($q->param('showpic')) { AZ> &print_pic($q->param('showpic'), $q->param('frame')); ты уверен, что тебе не достаточно просто print_pic(...), без & в начале? AZ>print "<TABLE align=$main::st_align CELLPADDING=4 CELLSPACING=2 BORDER=1>"; Я традиционно рекомендую выносить весь HTML в отдельные шаблоны и использовать для этого Template Toolkit (http://www.tt2.org), но тут у тебя маленький скрипт, так что это сойдет, наверно. AZ>open(DATA, "$main::fetchipac $main::fetchipac_options ". AZ> "-t$starttime,$endtime -m|") AZ> || die "can't run $main::fetchipac\n"; AZ>my $count=<DATA>; AZ>while(<DATA>) AZ>{ AZ> if (/^(.)\s(\d+)$/) { AZ> my $ts = $2; AZ> if ($1 eq "*") { AZ> push(@main::timestamps, $ts); AZ> } AZ> } AZ>} AZ>close DATA; AZ>sub makeunixtime { Я вообще не понял, чего эта функция делает? AZ>sub print_pic { AZ> my $pic=shift; AZ> my $frame=shift; AZ> $pic=~s/\_/ /g; AZ> if (defined($pic) && ($ENV{'HTTP_REFERER'} eq url())) { REFERER никто выставлять не обязан, так что ты запросто можешь отказать вполне легальному посетителю в обслуживании. В тоже время, кто угодно может выставить какой-угодно реферер и посмотреть на картинки. AZ> open (DATA, "$main::ipacsum -f\"$pic\" ". AZ> "-t\"$frame\" --png --png-asis --png-to-stdout|") AZ> || die "$main::me: can't run $main::ipacsum\n"; AZ> binmode DATA; AZ> binmode STDOUT; AZ> print <DATA>; AZ> close DATA; AZ> } else { AZ> print header, start_html('Error'), AZ> h1({-align=>"center"}, 'This script is not intended for', AZ> 'such a use. Sorry for any inconveniecies.'), end_html; AZ> } AZ> exit; AZ>} -- Pavel Ammosov O \ apavel@aha.ru __ ) http://isabase.philol.msu.ru/~apavel/ ) wget -O - isabase.philol.msu.ru/~apavel/key.asc|pgp -fka O / --- FIDOGATE 4.4.0-snp10 * Origin: Zenon N.S.P. news server (2:5020/52.0) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/30202b2da7579.html, оценка из 5, голосов 10
|