Учебные материалы по математике | Элементы ооп на perl | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Элементы ооп на perl


print "<p>Вы послали $value1.";

print <<End1;

</body></HTML>

End1

Для сокращения объема кодирования текста можно использовать функции:

header () возвращает:

—  строку с Content-type;

—  пустую строку.

start_html (строка)

—  строку строка можно использовать как заголовок документа (HTML-титул).

h1 (строка)

—  выдает как заголовок уровня 1.

p (строка)

—  выдает как новый абзац.

Если все функции в поместить список qw, то он получится очень большим. Чтобы этого не делать, используют:

директивы импорта — метки групп функций. Она начинается с :

:cgi — импортировать все методы для обработки

аргументов формы

:form — импортировать все методы создания

заполняемых форм, например, textfield().

:html2 — импортировать все методы, которые генереруют

стандвриные элементы html 2.0.

:html3 — что предложены в html 3.0.

:netscape — расширения HTML, характерные для Netscape.

:shortcuts — импортировать все сокращения, генерируемые

HTML, то-есть html2, html3,netscape.

:standart — импортировать стандартные возможности html2,

form и cgi.

:all – все методы.

Полный список директив импорта и функций – в CGI. pm, где определены переменные %TAGS.

Тот же пример.

use CGI qw (:standart);

print header();

print start_html ("Пример");

h1 ("Пример 2");

my $value1=param ("name1");

print p ("Вы послали $value1.");

print end_html();

Элементы ООП на Perl

Доступ к классам осуществляется загрузкой соответствующего модуля, так как объектно-ориентированные модули обычно ничего не экспортируют. Для создания объекта класса надо вызвать специальный метод — конструктор.

$query=CGI->new(); # Вызвать метод new() в классе "CGI"

или

$query= new CGI;

Эти виды эквивалентны

Вызов метода класса осуществляется точно также как, вызов метода объекта, только вместо использования объекта – используется имя класса.

Этим самым модуль CGI возвращает объект $query, который содержит данные формы для данного запроса.

Метод new() констрирует и возвращает новый CGI-объект, соответствующий заполненной и переданной форме. Этот объект содержит все данные, введенные пользователем в форму. Будучи вызванным без аргументов, метод new() создает объект путем чтения данных, переданных броузером. Если в качестве аргумента указан дескриптор файла, то читает этот дескриптор, надеясь найти в нем данные, введенные ы форму в предыдущем сеансе работы броузера.

Для извлечения данных применяется метод param():

$value1=$query->param("name1");

Здесь видно, что объект query — это хеш и доступ к нему идет через функцию param() с аргументом имени соответствующего поля.

Скрипт может не только обрабатывать данные формы, но и генерировать HTML-страницу с формой. Для этого пргоизводится анализ аргументов. Если их нет, то происходит генерирование пустой формы, иначе – обработка этой формы.

Пример.

#!usr/local/bin/perl

# Программа генерирования формы и ответа на форму

use CGI qw(:standart);

$Ice_Creame = CGI -> new(); # Создаем объект, соответствующий

# нашей форме

print $Ice_Creame -> header,

$Ice_Creame -> start_html(

-title => ‘Заказ мороженого’,

-author => ‘Moskalev’,

-mete => {‘keywords’=> ‘CGI Perl’},

-BGCOLOR => ‘white’,

-LINK => ‘red’

),

$Ice_Creame ->center($Ice_Creame -> h1("Заказ мороженого"));

if ($Ice_Creame -> param())

{ #форма уже заполнена

my $who= $Ice_Creame ->param("name");

my $flavour= $Ice_Creame -> param("flavour");

my $kolich = $Ice_Creame ->param("kolich");

my $cost=1.20;

my $sum=sprintf("%.2f",$kolich*$cost);

print $Ice_Creame -> p(‘$who получил $kolich порций на сумму $sum по цене $cost’)

} else

{ #Данных нет. Генерирование формы

print $Ice_Creame -> hr(),

$Ice_Creame -> start_form(

-method => ‘POST’,

-action =>’http://localhost/cgi-bin/ice. pl’

),

$Ice_Creame -> p(‘Ваше имя?’),

$Ice_Creame -> textfield (

-NAME => ‘name’, # название поля для ввода

-SIZE => 50 # размер поля в 50 символов

),

$Ice_Creame -> p(‘Ваш любимый вид’),

$Ice_Creame -> scrolling_list (

-NAME =>’flavour’,

-VALUES => [

qw (Пломбир Фруктовое Кофейное)],

-LABELS => (

mint => ‘Сильно мятное’,

cherry => ‘Вишневое’,

moshi => ‘Кофейное’,

),

— SIZE => 2,

— MULTIPLE => ‘true’,

),

$Ice_Creame -> p(‘Сколько?’),

$Ice_Creame -> popup_menu(

-name => ‘kolich’,

-values => [1..4]

),

$Ice_Creame -> submit(‘Заказать’),

$Ice_Creame -> reset(‘сброс’),

$Ice_Creame -> end_form(),

$Ice_Creame -> hr(),

};

print $Ice_Creame -> end_html;

Если у нас есть массив

@choise=(‘Пломбир’,’Фруктовое’,’Кофейное’)

Тогда popup_menu можно применить так

print $Ice_Creame -> p("Вид",$Ice_Creame -> popup_menu("flavor",@choise));

Более подробно о некоторых методах модуля CGI. pm

1.  header ()

—  если метод применяется без аргументов, то он возвращает только Content—type: text/html и пустую строку.

—  если этот метод применяется с одним аргументом, например, header(‘text/plain’), то он будет возвращать

Content-type: text/plain и пустую строку.

—  если в методе задать два аргумента header(‘text/html’,’204 No response’), то он будет возвращать следующие строки:

—  Status: 204 No response

—  Content-type: text/html

—  пустая строка

—  наиболее общее обращение у этого метода будет следующим:

$query -> header (

-type=>’text/html’, # тип содержимого

-nph=>0, # если значение не равно

# нулю, то скрипт должен

# формировать ответ

# полностью

-status=>’200 All Ok!’, # задает код и текст

# сообщения

-cookie=>$cookie, # задает строку для посылки

# броузеру локально

# сохраняемых данных

-expires=>’+3d’); # задает срок действия

# Cookie на локальной машине

Можно дополнительно создавать параметры метода. Для этого необходимо задать имя поля и его значение:

-имя поля => ‘Значение поля’.

Например,

-Cost=> ‘$2.00’

2.  start_html(строка)

Наиболее общая форма обращения:

$query -> start_html (

-title=> ‘CGI Programming’,

-author=> ‘[email protected] cc. dd’,

-base=> ‘true’,

-xbase=> ‘http://www/dgtu/donets/ua’,

-target=> ‘_blank’,

-meta=> {‘keywords’ => ‘CGI HTTP Perl’,

‘content’ => ‘CGI, HTTP, Perl’},

— style=> {‘src’=>’/styles/stylel. css’},

— bgcolor=> ‘magenta’);

Здесь

title – строка, что выводится броузером как заголовок

документа;

author — адрес электронной почты автора документа или

CGI-скрипта;

base — ‘true’, если надо выводить базовый адрес;

xbase — сам базовый адрес;

target — куда загружать документ для фреймовой

структуры;

meta — задает тег META. Ключ параметра задает имя

атрибута, а значение параметра задает значение

атрибута

style — алрес файла с таблицей стилей;

bgcolor — цвет фона для документа.

В результате будет выведено следующие:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<HTML><HEAD><TITLE>CGI Programming</TITLE>

<LINK REV=MADE HREF="mailto:[email protected] cc. dd">

<BASE HREF=file:///D|/Apache/cgi-bin/stylel. css TARGET="_blank">

<META NAME="keywords" CONTENT="CGI HTTP Perl">

<META NAME="content" CONTENT="CGI, HTTP, Perl">

<LINK REL="stylesheet"

TYPE="text/css" HREF="/styles/stylel. css">

</HEAD>

<BODY BGCOLOR="magenta">

</BODY></HTML>

3.  end_html

Данный метод служит для завершения HTML-документа. Он возвращает два конечных тега </body></html>.

4.  Методы для генерации тегов

а) $query -> hr;

Для вывода тега <hr>.

б) print $query -> h1("Глава 1");

Служит для вывода заголовка текста самым большим шрифтом. Будет сформировано <h1> Глава 1</h1>.

В этом методе можно указывать список строковых аргументов через запятую. Тогда они будут выведены через пробел. Например:

print $query -> h1("Глава","1");

Будет сформировано <h1> Глава 1</h1>.

Если в методе первый параметр – ссылка на хеш, то ключи обозначают, что это атрибуты тега, а значения параметра означают, что это значения атрибутов тега.

Пример:

print $query -> a ( {href=>’index. html’,target=>’_top’},

"На главную страницу");

В этом случае будет сформировано:

<a href="ndex. html" target="_top"> На главную страницу</a>

Клшючи хеша могут быть как с ведущим знаком "минус"

так и без него. Например:

1. print $query -> img ({ — src =>’foto. gif’,

-=>’center’});

2. print $query -> img ({src=’foto. gif’,=’center’});

И в том и в другои случае будет сформировано:

<img src="foto. gif" ="center">

5.  Генерация форм

а) start_form ()

print $query -> start_form (

-method => $method,

-action => $action,

-encoding => $encoding);

или

print $query -> start_form ($method, $action, $encoding);

б) endform

print $query -> endform;

в) Текстовое поле ввода textfield ()

print $query -> textfield (

-name => ‘field_name’, # имя поля

-default => ‘starting_value’, # начальное значение

# поля

-size => 50, # размер выводимого

# поля

-maxlength => 80); # максимальное число

# символов в поле

или

print $query ->

textfield (‘field_name’, ‘starting_value’,50,80);

Здесь порядок необходимо соблюдать строго, в отличие от первого способа.

В результате будет сформирован следующий текст HTML документа.

<input name="field_name" value="starting_value" size=50 maxlength=80>

г) Многострочное поле ввода текста textarea ()

print $query -> textarea (

-name => ‘field_name’, # имя поля

-default => ‘starting_value’, # начальное значение

# поля

-row => 50, # количество строк для

# поля

-columns => 80); # количество столбцов

# для поля

д) Поле ввода пароля password_field ()

Параметры аналогично параметрам метода textfield ().

е) Поле для передачи файла filefield ()

Параметры аналогично параметрам метода textfield ().

Параметр name задает имя поля для загоузки файла.

ж) Ниспадающее меню popup_menu ()

Позволяет задать список в любом виде:

—  в виде списка значений;

—  в виде внутреннего списка значений и отображаемых пользователю текстовых описаний;

—  можно задать элемент списка по умолчанию.

1) print $query -> popup_menu (

‘menu_name’, [‘Unix’, ‘Win’,’Mac’],’UNIX’);

2)  %labels = ( ‘UNIX’ => ‘OS 1’,

‘Win’ => ‘OS 2’,

‘Mac’ => ‘OS 3’);

print $query -> popup_menu (

‘menu_name’, [‘Unix’, ‘Win’,’Mac’],’UNIX’,%labels);

3)  print $query -> popup_menu (

-name => ‘menu_name’,

-values=> [‘Unix’, ‘Win’,’Mac’],

-default=>’UNIX’,

-labels=>%labels);

Здесь:

— NAME – имя всплывающего меню.

— VALUES – ссылка на анонимный массив, содержащий текст

каждого элемента меню;

— DEFAULT (optional)– элемент, отображаемый по умолчанию;

— LABELS (optional)– ссылка на анонимный хеш. Значение

хеша – это метки (элементы списка), которые видит

пользователь формы. В CGI-сценарии передается ключ хеша.

В первом случае будет сформирован следующий фрагмент HTML-кода:

<select name "menu_name">

<option selected value="UNIX"> UNIX

<option selected value="Win"> Win

<option selected value="Mac"> Mac

</select>

Во втором и третьем вариантах будет сформирован следующий фрагмент HTML-кода:

<select name "menu_name">

<option selected value="UNIX"> OS 1

<option selected value="Win"> OS 2

<option selected value="Mac"> OS 3

</select>

з) Списки с множественным выбором scrolling_list ()

Служит для создания поля <select multiple>. Отличие от обычного ниспадающего списка заключается в том, что имеется возможность выбора сразу нескольких элементов.

1) print $query -> scrolling_list(

‘list_name’,[‘1′,’2′,’3′,’4’],[‘2′,’4’],3,true);

2) %labels= (‘1’=>’num1′,’2’=>’num2′,’3’=>’num3′,’4’=>’num4’);

print $query -> scrolling_list(

‘list_name’,[‘1′,’2′,’3′,’4’],[‘2′,’4’],3,true,%labels);

Здесь все аналогично случаю 1), но только выводимым текстом на экране будут значения хеша %labels. В этом методе везде применяются анонимные массивы и хеши, поэтому мы из хеща %labels

делаем ссыдку на хеш %labels.

3) print $query -> scrolling_list(

-name =>’list_name’,

-values =>[‘1′,’2′,’3′,’4’],

-default =>[‘2′,’4’],

-size =>3,

-mulyiple =>true,

-labels =>%labels);

Здесь:

— NAME – имя ниспадающего списка. Значение этого параметра

можно использовать для выборки данных пользователя с помощью param().

— VALUES – ссылка на анонимный массив. Этот массив состоит

из ключей хеша, на которые ссылается –LABELS.

— DEFAULT (optional)– указатель на анонимный массив, элементы которого будут отмечены в списке по умолчанию;

— SIZE (optional)– размер списка, то-есть число, определяющее, сколько элементов списка пользователь будет видить одновременно.

— MULTIPLE (optional)– принимает истинное или ложное значение. Если значение равно 1, то пользователь может вызвать более одного элемента, а если значение равно 0, то может вызвать только один элемент. Если – MULTIPLE установлен в значение "истина", то Вы можете присвоить список, возвращаемый функцией param() массиву @choise = param("flavour");

— LABELS (optional)– ссылка на анонимный хеш. Значение хеша

– это метки (элементы списка), которые видит пользователь

формы. В CGI-сценарии передается ключ хеша. Например, если

пользователь выбирает "Вишневое", то CGI-программа получает

cherry.

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

и) Группа кнопок типа check box checkbox_group ()

Применяется для создания одной группы кнопок типа check box.

print $query -> checkbox_group (

-name => ‘group_name,

-values => [‘1′,’2′,’3′,’4’],

-default => [‘1′,’3’],

-linebreak => ‘true’,

-labels=>%labels);

-NAME – общее имя для всей группы кнопок;

-VALUES – задает ссылку на анонимный массив. Этот массив содержит значения для каждой кнопки из этой группы;

-DEFAULT (optional)– может быть указателем на анонимный массив, элементы которого будут отмечены в группе кнопок по умолчанию или скаляром, показывающем какая кнопка будет отмечена по умолчанию.

-LINEBREAK (optional) – задает расположение группы кнопок в строку, если значение соответствует ЛОЖЬ, или в столбец, если значение соответствует ИСТИНА.

-LABELS (optional)– ссылка на анонимный хеш. Значение хеша – это названия кнопок, которые будет видить пользователь формы.

Если в CGI. pm включена опция html3, то кнопки можно помещать в таблицу.

print $query -> checkbox_group (

-name => ‘group_name,

-values => [‘1′,’2′,’3′,’4’],

-rows => ‘2’,

-columns => ‘2’);

Параметры –rowheaders и –colheaders задают заголовки строк и столбцов.

Для одной кнопки применяется метод checkbox ().

Пример:

print $query -> checkbox (

-name => ‘check_name,

-value => ‘ON’,

-label => ‘Click me’).

к) Группа кнопок вида radio box radio_group ()

Применяется для создания одной группы кнопок типа radio box.

print $query -> radio_group (

-name => ‘group_name,

-values => [‘1′,’2′,’3′,’4’],

-default => [‘3’],

-linebreak => ‘true’,

-labels=>%labels);

Параметры и пример аналогичен checkbox_group. При опции html3 также можно применять таблицы для формирования группы кнопок.

л) Кнопки submit и reset

Применяется для отсылки данных формы на сервер (submit)и для сброса введенных значений в форму (reset).

print $query -> submit (

-name => ‘button_name,

-value => ‘value’);

print $query -> reset (

-name => ‘button_name,

-value => ‘value’);

м) Кнопка button

Применяется для создания кнопки при использовании в HTML-документе программ на языке JavaScript

print $query -> button (

-name => ‘button_name,

-value => ‘Нажми’,

-onClick => ‘do_function()’);

В этом случае будет сформирован следующий фрагмент HTML-документа.

<input type="button" name="button_name" value="Нажми" onClick="do_function">

Параметр –onClick может быть применен в методах button(),

submit() и reset().

Параметры –onLoad и onUnload могут быть применены в методе start_html().

Параметры –name и onSubmit могут быть применены в методе startform ().

Параметры –onChange, -onFocus, — onBlur и onSelect могут быть применены в методах для textfield(), textarea(), password_field() и filefield().

Параметры –onChange, -onFocus и — onBlur могут быть применены в методах для popup_menu()и scrolling_list().

Во все эти методы можно ставить параметр –script для вставки тега.

Пример:

print $query -> start_html (

-title => ‘Hello’,

-script =>

{-language=>’JavaScript’,

— onLoad=> "Windos. status=’Non Stop’;"},

-onLoad => "alert(‘Заходите нам’);",

В этом примере будет сформирован следующий фрагмент кода:

<html>

<head><title>Hello</title>

<script language="JavaScript">

<!—

window. status = "Non Stop";

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020

А ты боишься COVID-19?

 Пройди опрос и получи промокод