Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Andrey Sapozhnikov                   2:5020/400     08 Jun 2002  16:54:06
 To : Michael Tsaruk
 Subject : Re: Как сделать
 -------------------------------------------------------------------------------- 
 
 Michael Tsaruk wrote:
 
 > Сабж, надо поменять вводимые слова например:
 > вводится "Привет мир", а из файла на страницу выводится "Hello world"
 
 Чума! Более расплывчатого описания задачи не придумать. По идее
 любая программа занимается тем, что меняет по какому-то закону
 входные данные и делает из них выходные :) Варианты решения:
 
 ======================= 1 (тривиальный) ===================
 use strict;
 use CGI;
 
 my $query = CGI->new;
 print $query->header('text/plain'), 'Hello world';
 
 ======================= 2 (условный) ======================
 use strict;
 use CGI;
 
 my $query = CGI->new;
 my $privet = $query->param('text');
 print $query->header('text/plain'),
      $privet eq 'Привет мир' ? 'Hello world' : 'i dunno...';
 
 ======================= 2 (регулярный) ======================
 use strict;
 use CGI;
 
 my $query = CGI->new;
 my $privet = $query->param('text');
 $privet =~ s/^Привет мир$/Hello world/;
 print $query->header('text/plain'), $privet;
 
 ======================= 3 (криптографический (KOI8-r)) ================
 use strict;
 use CGI;
 
 my $query = CGI->new;
 my $privet = $query->param('text');
 print $query->header('text/plain'),
      $privet ^ "\xb8\xb7\xa5\xbb\xaa\xf4W\xa2\xbb\xbed";
 
 ======================== 4 (простой табличный) =======================
 use strict;
 use CGI;
 
 my %xlat = ('Привет мир' => 'Hello world');
 my $query = CGI->new;
 my $privet = $query->param('text');
 print $query->header('text/plain'), $xlat{$privet};
 
 ======================== 5 (табличный c субд) =======================
 use strict;
 use CGI;
 use DBI;
 
 my $query = CGI->new;
 my $privet = $query->param('text');
 my $dbh = DBI->connect(':dbi:driver:server', 'user', 'passwd');
 print $query->header('text/plain'),
      $dbh->selectrow_array('SELECT eng FROM xlat WHERE rus=?', {},
          $privet);
 
 ======================== 6 (преформатированный) =======================
 use strict;
 use CGI;
 
 my $query = CGI->new;
 my $privet = $query->param('text');
 print $query->redirecr("$privet.html");
 
 ============================ 7 (объектный) =============================
 use strict;
 use CGI;
 
 package Privet;
 
 sub new {
      my $type = shift;
      my $self = {
          RUS => @_?$_[0]:undef
      };
      bless $self, ref($type) || $type;
      $self;
 }
 
 sub rus {
      my $self = shift;
      $self->{RUS} = $_[0] if @_;
      $self->{RUS};
 }
 
 sub eng {
      my $self = shift;
      unless (exists($self->{ENG})) {
          $self->do_xlat();
      }
      return $self->{ENG};
 }
 
 sub do_xlat {
      die "abstract class method called!";
 }
 
 packаge Privet::DB;
 use DBI;
 use vars qw(@ISA);
 @ISA = qw(Privet);
 
 sub new {
      my $class = shift;
      my $self = $class->SUPER::new(@_);
      $self->{DBH} = DBI->connect(':dbi:driver:server', 'user', 'passwd',
          {RaiseError => 1});
      $self;
 }
 
 sub do_xlat {
      my $self = shift;
      $self->{ENG} = $self->{DBH}->
          selectrow_array('SELECT eng FROM xlat WHERE rus=?', {},
              $self->{RUS});
 }
 
 sub DESTROY {
      $self->{DBH}->disconnect;
 }
 
 package main;
 
 my $query = CGI->new;
 my $privet = $query->param('text');
 my $p = Privet::DB->new($privet);
 print $query->header('text/plain'), $p->eng;
 
 ============================== все... главное вовремя остановиться!
 ===============
 
 Андрей
 
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Как сделать   Michael Tsaruk   08 Jun 2002 00:46:48 
 Re: Как сделать   Andrey Sapozhnikov   08 Jun 2002 16:54:06 
 Re: Как сделать   Yury_Sukhovey   08 Jun 2002 16:03:53 
Архивное /ru.cgi.perl/52847b4f5031.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional