Jovani
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Сейчас пытаюсь создать скрипт, который будет архивировать форум, вернее не архивировать, а создавать HTML-ки. Одна HTML - содержание, и на каждую тему по HTML. Сам скрипт для тем ниже, он работает, но нужна помощь в доделке. Сам я в PERL-е очень плох Он создает файлы тем, но если темы нету(например была удалена администратором) на эту тему создается пустой файл, посему вопрос: 1. Как узнать, что файла темы не существует? 2. Куда-бы прикрутить эту проверку? Вот скрипт: Код: #!/usr/bin/perl use CGI::Carp "fatalsToBrowser"; use CGI qw(:standard); require "ikon.lib"; require "data/progs.cgi"; require "data/boardinfo.cgi"; require "data/styles.cgi"; ##################### Настройки ############################################ $myforum = 1; # Номер форума, который архивировать $starttopic = 911; # с какого топика архивировать $endtopic = 919; # по какой топик архивировать $mydir = "d:/ikonboard/archiv/"; # Сюда все файлы будем кидать, его сделать заранее ################################################################################## while ($starttopic < ($endtopic + 1)){ # Узнаем название топика $filetoopen = "$ikondir" . "forum$myforum/$starttopic.thd"; open(FILE, "$filetoopen"); @threads = <FILE>; close(FILE); ($trash, $topictitle, $trash) = split(/\|/, @threads[0]); $postdate = &dateformat($postdate + ($timedifferencevalue*3600) + ($timezone*3600)); # Узнаем описание топика open (TMP, "$ikondir" . "forum$myforum/$starttopic.pl"); @my = <TMP>; ($topicid, $topictitle, $topicdescription, $threadstate, $threadposts, $threadviews, $startedby, $startedpostdate, $lastposter, $lastpostdate) = split (/\|/,@my[0]); close (TMP); # Печать заголовока темы $output .= qq~ <html> <head> <title>Тема - $starttopic</title> <meta http-equiv="content-type" content="text/html; charset=windows-1251"> </head> <body style="MARGIN-LEFT: 50px; MARGIN-RIGHT: 50px"> ~; $output .= qq~<h3 align=center><font color="#800000"><a href="$boardurl/$threadprog?forum=$myforum&topic=$starttopic"><b>$topictitle</b></a></font>~; $output .= qq~<br>$topicdescription~ if $topicdescription; $output .= qq~</h3>~; $output .= qq~<table width="90%" align="center" BORDER="0" cellspacing="1" cellpadding="6" bgcolor="#999999">~; # Печать темы с ответами foreach $line (@threads) { ($postermembername, $topictitle, $postipaddress, $showemoticons, $showsignature, $postdate, $post) = split(/\|/,$line); $post = &ikoncode("$post"); $post =~ s/<\;/\</g; $post =~ s/>\;/\>/g; $post =~ s/"\;/\"/g; $postdate = &dateformat($postdate + ($timedifferencevalue*3600) + ($timezone*3600)); $output .= qq~<tr bgcolor="#ffffff">~; $output .= qq~<td valign="top"><b>$postermembername</b></td> ~; $output .= qq~<td valign="top">$post</p><p align=right>$postdate</p></td></tr>~; } # Конец топика $output .= qq~</table><p align=center>конец темы</p>~; &filecreate; # Создаем файл } continue { $starttopic++; # Увеличиваем номер топика } # конец работы print "Content-type: text/html\n"; print "Pragma: no-cache\n\n"; print "<HTML><HEAD>"; print "</HEAD><BODY>"; print "Работа скрипта выполнена"; print "</BODY></HTML>"; exit; sub filecreate { # Создание файла $file = "$mydir/$starttopic.html"; open (FILE,"> $file"); print FILE "$output"; print FILE "</body></html>"; close (FILE); $output = ""; } | |