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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GLOB ссылка на код 
V
    Опции темы
gcc
Дата 10.2.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


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

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



Код

$if = "if";

$t = 1;


$if ($t eq 1) {
   print '1';
}




подскажите, как заставить работать примерно такой код? есть ли аналоги готовые модули для такой реализации?

я хотел сделать триггеры на логике unless  if else eslif для того чтобы в виде абстрации (в виде структуры) (в виде параллельного программирования) отправить данные в класс и чтобы там выполнились некоторые логический действия...


например это ($t eq 1)  какой-то метод класса...

т.е. чтобы не выполнять одно и тоже, например вот участок кода который у меня все время выполнятеся
Код


            if (
                (
                     (  $c->user_exists()
                    && $_->{id_un} == $c->user->{user}->{id}
                    && $_->{created} > time - MyApp->config->{comment}->{edit_limit}

                            ||                            
                        
                        !$c->user_exists()
                        && $_->{id_un} == 0
                            && $_->{ip} && $c->request->address && $_->{ip} eq $c->request->address 
                    && $_->{created} > time - MyApp->config->{comment}->{edit_limit_guest} )                                                
                    
                    && $loop_data2->{close_co} != 1
                )
                || $c->check_user_roles('moder_co')
              )
            {

                #  print '1';
                $_->{edit_cm}   = 1;
            }




в этом же классе у меня есть

           
Код

 unless (
                (
                     (  $c->user_exists()
                    && $_->{id_un} == $c->user->{user}->{id}
                    && $_->{created} > time - MyApp->config->{comment}->{edit_limit}

                            ||                            
                        
                        !$c->user_exists()
                        && $_->{id_un} == 0
                            && $_->{ip} && $c->request->address && $_->{ip} eq $c->request->address 
                    && $_->{created} > time - MyApp->config->{comment}->{edit_limit_guest} )                                                
                    
                    && $loop_data2->{close_co} != 1
                )
                || $c->check_user_roles('moder_co')
              )
            {

                #  print '1';
                $_->{edit_cm}   = 1;
            }


видите что разница только в if unless

как сделать чтобы  один и тот же код не выполнять?




Это сообщение отредактировал(а) gcc - 10.2.2010, 14:26
PM WWW ICQ Skype GTalk Jabber   Вверх
arto
Дата 10.2.2010, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 38
Всего: 40



perldoc -f eval
PM MAIL ICQ   Вверх
gcc
Дата 10.2.2010, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


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

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



arto

спасибо, не знал что именно это там есть, работает

Код

#!/usr/bin/perl
                            
$if = "if";

$t = 1;

$t1 = "{";
$t2 = "}";

sub hh {
$t eq 1;
}

eval " $if ( hh() ) $t1
   print '1sdf';
$t2

";




Код

$ ./perl34.pl
1sdf$ 



...я так понял в mod_perl (catalyst) оно должно быть нормально...





Это сообщение отредактировал(а) gcc - 10.2.2010, 15:05
PM WWW ICQ Skype GTalk Jabber   Вверх
sir_nuf_nuf
Дата 10.2.2010, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 14
Всего: 31



да, должно.

но то что вы хотите сделать - бооольшое зло.  
А) eval "строка" - это все таки медленно
Б) это не безопасно. принципиально. Вам придется очень тщательно следить за тем что может оказаться на месте "if"


У вас же ООП - ну вот и следуйте ему: Создайте класс Condition, отнаследуйте от него IfCondition и вперед!

Код

$cond = "IfCondition"
$conf->check(...)



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


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

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


 




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


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

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