Rezzonans учимся писать сразу правильно:
| Код | #!perl -w
use strict; # прагма, задает ограничения и правила, использовать всегда!
use CGI qw(-no_xhtml :standard); # очень важный модуль, необх. знать каждому use CGI::Carp qw(fatalsToBrowser); # ловит ошибки и выводит их в браузер
use File::Spec; # пригодится для обработки файлов
my $url = "http://".http('HTTP_HOST').'/photo'; # url-путь к папке photo
# JavaScript, немного переделанный, но он НЕ работает.... my $js = <<JS; function location(i, url) { myWin = open('', 'clrscr' + i,'width = 400, height = 300, toolbar = no, menubar = no, status = no'); myWin.document.open(); myWin.document.write("<html><head><TITLE>Photo ¹ i</TITLE></head><div id="i" style="position:absolute;top:0;left:0;z-index:1"><img width="400" height="300" src="url"></div></html>"); myWin.document.close(); } JS
# открытие папки с фотками, можно указать полный или относительный путь opendir DIR, './../photo' || die 'Error'; my @data = readdir DIR; closedir DIR;
# удаление из массива ссылки на корень (.) и ссылки на предыдущую директорию (..) @data = File::Spec->no_upwards(@data); # удаление лишних файлов (не jpg и bmp) @data = grep { $_ =~ /\.jpg/i || $_ =~ /\.bmp/i} @data;
# заголовок страницы print header(-charset => 'windows-1251'), start_html(-title => 'Photo', -script => {'code' => $js, 'language' => 'JavaScript'} );
&get_photo($url, \@data) if @data;
print end_html();
sub get_photo($$) { my ($url, $data) = @_;
for (my $i=0; $i<@{$data}; $i++) { my $photo_url = $url.'/'.$data->[$i];
print a({-href => "javascript: location($i, $photo_url)"}, img({-src => $photo_url, -width => 200, -alt => "photo number $i", border => 0}) ); } }
|
Если не понятно как работать с CGI, то читай документацию, можешь переделать на обычные теги.
Вопрос зачем ты цикл начинал с трех? зачем для каждой картинки своя JS-функция?
У меня папка photo доступна по http://localhost/photo, скрипт http://localhost/cgi-bin/photo.cgi.
|