Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Как достать данные из HTML формы


Автор: StarT 3.5.2013, 06:37
Здравствйте, недавно начал программировать на perl. 
Создаю Html страницу с формой и отдельный perl скрипт.
Собственно, вот примеры:
HTML файл.
 
Код

<HTML>
<BODY>
<form method="GET" action="cgi/jj.pl">
<Select name="System" Size ="1">
<Option Value="Solyaris">Solyaris
<Option value="Andromeda">Andromeda
</SELECT><BR>
<input type="text" name = "Planets"> </br>
<input type = "submit" value="Узнать!"> 
</form>
</BODY>
</HTML>


Perl скрипт:

Код

#!/usr/bin/perl -w
print "Content-type: text/html\n\n";
read(STDIN, $Sist, $ENV{'CONTENT_LENGTH'});
 @galactics = split(/&/, $Sist);

if(@galactics eq 'i')
 {
  print"Not dound";
 }
if($gouk eq "Solyris")
  {
   print"Солн. сист.";
   print"\n <br>";
  }
  else
  {
  print"_";
  }
   if ($gouk eq "Andromeda")
   {
    print"Андромеда";
    print"\n<br>";
   }
   else
   {
   print"_";
   }

my $buffer;
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
if(@pairs eq " ")
 {
  print"Not found";
 }
  elsif($pairs eq 'Earth')
  {
   print"Земля";
   print"\n<br>";
  }
    elsif(@pairs eq 'Mercury')
     {
      print"Меркурий";
     }


Собственно в окне браузера выдает мне только __, если прописать вместо eq, == то выдаст, Солн. сист.  Андромеда, Земля , Меркурий
Попробовал вывести содержимое переменных - пустота, иными словами как присвоить переменной в perl коде, переменную под name в HTML коде?
Извините, вопрос, возможно, глупый и все же хотелось бы увидеть адекватного ответа smile

Автор: alezzz 3.5.2013, 07:51
Нужен именно хардкор или можно использовать http://perldoc.perl.org/CGI.html?

Автор: StarT 3.5.2013, 08:02
Цитата

 CGI?
 Не сильно понимаю в этом, давайте хардкор, курсач-то писать надо )

Автор: alezzz 3.5.2013, 09:01
С хардкором лень разбираться smile, а вот с CGI есть небольшой пример:
Код

#/usr/local/bin/perl

use strict;
use v5.10.1;
use CGI::Carp qw(fatalsToBrowser);
use CGI qw(:standard);

my $system = param('System');
my $planets;

given ($system){
    when ('Solyaris'){
        $planets = 'Mercury, Venus, Earth, etc.';
    }
    default {
        $planets = 'Ask your nearest astronomer';
    }
}

print header();

print <<"HTML"
<HTML>
    <BODY>
        <form method="GET" action="cgi/jj.pl">
            <Select name="System" Size ="1">
                <Option Value="Solyaris">Solyaris
                <Option value="Andromeda">Andromeda
            </SELECT>
            <BR>
            <input type="text" value="$planets">
            </br>
            <input type="submit" value="Узнать!"> 
        </form>
    </BODY>
</HTML>
HTML


В конце после HTML обязательно пустую строку (тут её обрезало).
По вашему исходнику непонял чего нужно добиться, в моем примере показал как работать с переменными.
Если преподаватель не против, то лучше воспользоваться готовыми решениями, CGI, Template и т.д.

Автор: StarT 3.5.2013, 11:19
Большое спасибо, щас буду разбираться smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)