Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простой алгоритм 
V
    Опции темы
Materium
Дата 24.7.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



Всем привет. Простая задача, но не пойму почему не работает. Есть команды, например %10, %11, ... %нн... числа соответствуют картинкам, то есть имя картинки гиф совпадает с индексом в команде. Соответственно, команда %10 заменяется на картинку с именем 10.gif
Чтобы не писать огромные смешные блоки, типа: 
Код

s#%11#<IMG src=\"/smile/11\.gif\">#g;
s#%12#<IMG src=\"/smile/12\.gif\">#g;
s#%13#<IMG src=\"/smile/13\.gif\">#g;
s#%14#<IMG src=\"/smile/14\.gif\">#g;
s#%15#<IMG src=\"/smile/15\.gif\">#g;
s#%16#<IMG src=\"/smile/16\.gif\">#g;
s#%17#<IMG src=\"/smile/17\.gif\">#g;
s#%18#<IMG src=\"/smile/18\.gif\">#g;


хотелось бы это автоматизировать в блоке, но след. блок ничего не делает:

Код

for ($text) {
  if ($text =~ m/%\d{2,}/g) { # картинки
       for ($per=10; $per >= 39; $per++) {
             s#%$per#<IMG src=\"/smile/${per}\.gif\">#g;
       }
   }
}


Вообще нумерация идёт с 01 до НН... но 01, 02 и т.д. я пока не допёр как в блоке наращивать наряду с нормальными числами... поэтому цикл у меня начинается с 10 и заканчивается неким кол-вом.

Пробовал так (весь код):
Код

for ($text) {
       if ($text =~ m/%\d{2,}/g) { # картинки
        s#%01#<IMG src=\"/smile/01\.gif\">#g;
        s#%02#<IMG src=\"/smile/02\.gif\">#g;
        s#%03#<IMG src=\"/smile/03\.gif\">#g;
        s#%04#<IMG src=\"/smile/04\.gif\">#g;
        s#%05#<IMG src=\"/smile/05\.gif\">#g;
        s#%06#<IMG src=\"/smile/06\.gif\">#g;
        s#%07#<IMG src=\"/smile/07\.gif\">#g;
        s#%08#<IMG src=\"/smile/08\.gif\">#g;
        s#%09#<IMG src=\"/smile/09\.gif\">#g;
            for ($per=10; $per >= 39; $per++) {
                                                                s#%$per#<IMG src=\"/smile/${per}\.gif\">#g;
                                                                }
        }
}


 smile  Хелп
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
JAPH
Дата 24.7.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 8.1.2007
Где: Ленобласть

Репутация: 1
Всего: 23



Либо я чего-то недопонял, либо
Код
s#%(\d{2,})#<IMG SRC="/smile/$1.gif">#g


Добавлено @ 21:59
Цитата
for ($per=10; $per >= 39; $per++)

for ($per=10; $per <= 39; $per++)
for($per = '00'; $per ne '39'; $per++)

Добавлено @ 22:02
for my $per ('00' .. '39') { print $per } smile

Добавлено @ 22:03
print for '00' .. '139';

Добавлено @ 22:03
TIMTOWTDI smile

Это сообщение отредактировал(а) JAPH - 24.7.2007, 22:05


--------------------
Что непонятно - спрашиваем smile
PM MAIL ICQ   Вверх
nitr
Дата 25.7.2007, 02:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 12
Всего: 84



Цитата(JAPH @  24.7.2007,  21:57 Найти цитируемый пост)
TIMTOWTDI smile
 ;)

как простое...
Код

    for (my $per=10; $per <= 39; $per++) {
        $text =~ s/%($per)/<img src="\/smile\/$1.gif">/smig;
    }

а не работало, потому как условие в цикле неверно у вас ;)

Добавлено через 2 минуты и 20 секунд
Код

$text =~ s/%($_)/<img src="\/smile\/$1.gif">/smig foreach (10..39);



--------------------
PM   Вверх
amg
Дата 25.7.2007, 07:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Я тоже не понял, зачем вообще циклы. Одно регулярное выражение, и все. 
Если имена картинок не начинаются с 0 (не 01.gif, а 1.gif), то чуть сложнее:
Код

$text =~ s#%(\d{2,})#'<IMG SRC="/smile/'.(0+$1).'.gif">'#eg;
$text =~ s#%0?(\d+)#<IMG SRC="/smile/$1.gif">#g;

PM MAIL   Вверх
Materium
  Дата 25.7.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



Если кто чего не понял то это из-за того что я тупой ламер. )))
Действительно хватило выражения 
Код

s#%(\d{2,})#'<IMG SRC="/smile/'.$1.'.gif">'#eg;

Всем большое спасибо! 
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
Materium
Дата 25.7.2007, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 127
Регистрация: 4.12.2006
Где: Питер

Репутация: нет
Всего: 2



А вообще чтобы за рамки не выходить конечно:

Код

for my $per ('00' .. '53') {
         s/%($per)/<img src="\/smile\/$1.gif">/smig;
         }

--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
amg
Дата 26.7.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 1
Всего: 50



Цитата(Materium @  25.7.2007,  17:23 Найти цитируемый пост)
 чтобы за рамки не выходить
Гораздо быстрее будет работать
Код

s#%(\d{2,})#$1<=53 ? "'<IMG SRC=\"/smile/$1.gif\">'" : "%$1"#eg;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.