|
|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/52847b4f5031.html, оценка из 5, голосов 10
|