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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поле со списком, запись в файл 
V
    Опции темы
киса2009
Дата 6.5.2010, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть такой тестовый скрипт с полем со списком
Код

#!z:/usr/perl/bin/perl


print "Content-type: text/html\n\n";
 use CGI ('param');
open (FILE,">>test.txt");
print qq|
<html>
<body>
<form method="post" action="">
<select name="test" size="10">
<option value="1">Line 1</option>
<option value="2">Line 2</option>
<option value="3">Line 3</option>
<option value="4">Line 4</option>
<option value="5">Line 5</option>
<option value="6">Line 6</option>
<option value="7">Line 7</option>
</select>
<input type="submit" value="ЕА">
</form>
|;



$choice=param('test');

if ($choice==1)
{print FILE "Line1";}

if ($choice==2)
{print FILE "Line2";

if ($choice==3)
{print FILE "Line3";
}
if ($choice==4)
{print FILE "Line4";}

if ($choice==5)
{print FILE "Line5";}

if ($choice==6)
{print FILE "Line6";}

if ($choice==7)
{print FILE "Line7";}
close FILE;
print qq|
</body>
</html>
|;

задача-выбранный элемент записать в файл
подскажите что не так

Добавлено через 4 минуты и 43 секунды
косяки найдены
PM MAIL ICQ   Вверх
OutlawZ
Дата 9.5.2010, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

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



Лучше использовать модуль use Switch чем if )


--------------------
user posted image
user posted image
PM MAIL   Вверх
shamber
Дата 9.5.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(OutlawZ @  9.5.2010,  11:14 Найти цитируемый пост)
Лучше использовать модуль use Switch чем if 

Откуда информация?
PM MAIL Jabber   Вверх
OutlawZ
Дата 9.5.2010, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

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



Цитата(shamber @  9.5.2010,  12:27 Найти цитируемый пост)
Откуда информация? 

perldoc -v switch

Кусок из документации описания оператора:
Код

NAME
    Switch - A switch statement for Perl

VERSION
    This document describes version 2.10 of Switch, released Dec 29, 2003.

SYNOPSIS
            use Switch;

            switch ($val) {

                    case 1          { print "number 1" }
                    case "a"        { print "string a" }
                    case [1..10,42] { print "number in list" }
                    case (@array)   { print "number in list" }
                    case /\w+/      { print "pattern" }
                    case qr/\w+/    { print "pattern" }
                    case (%hash)    { print "entry in hash" }
                    case (\%hash)   { print "entry in hash" }
                    case (\&sub)    { print "arg to subroutine" }
                    else            { print "previous case not true" }
            }

BACKGROUND


Это сообщение отредактировал(а) OutlawZ - 9.5.2010, 23:23


--------------------
user posted image
user posted image
PM MAIL   Вверх
shamber
Дата 10.5.2010, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



OutlawZ, где написано про лучше?
PM MAIL Jabber   Вверх
OutlawZ
Дата 10.5.2010, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 269
Регистрация: 19.10.2007

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



Цитата(shamber @  10.5.2010,  12:20 Найти цитируемый пост)
OutlawZ, где написано про лучше? 


А где это должно быть написано? считайте что тут написано ), switch он и в Африке switch, компактней получается если смотреть со стороны PHP кодинга. Все по блокам case нежели грубых if вставок, хотя я не претендую , каждый пишет как ему удобней и советует так же ), я бы лично через switch бы сделал.



--------------------
user posted image
user posted image
PM MAIL   Вверх
Pfailed
Дата 12.5.2010, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



О том, что Switch лучше там не написано, зато написано обратное. См. раздел limitations.


--------------------
PM MAIL   Вверх
odmink0
  Дата 12.5.2010, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Pfailed @ 12.5.2010,  07:56)
О том, что Switch лучше там не написано, зато написано обратное. См. раздел limitations.

Ну то, что хуже - там точно не написано %) 

Модуль Switch лучше использовать чем "каскадный if" банально по причине лучшей читабельности кода.  Тем более, что он входит в базовую поставку в версии 5.8.8 и выше (может и ниже, не знаю точно).

Да, у модуля есть ограничения, но они практически не затрагивают код, написанный в соответствии с книгой "Perl Best Practices" того же автора (must read для каждого хорошего программиста).

С другой стороны, этот модуль использует source parsing, что в принципе может стать источником непредсказуемых ошибок - "only perl can parse Perl". Ещё одним минусом модуля является наличие незакрытых багов 1-3-хлетней давности.

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


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

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


 




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


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

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