Вы находитесь на странице: 1из 7

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное


учреждение высшего образования
«Тихоокеанский государственный университет»

Кафедра
«Автоматика и Системотехника»

Лабораторная работа №13


по курсу «Архитектура информационных систем»
Тема: Регулярные выражения в Perl

Выполнил: студент группы


ИС(аб)-71 Белим Л.В.

Проверил:
Конопелько Г.К.

г. Хабаровск
2020 г.
Лабораторная работа №13
Регулярные выражения в Perl

Цель работы: изучение синтаксиса регулярных выражений Perl,


использование регулярных выражений для разработки динамических Web-
страниц.
Задание:
1.Придумать фразу не менее чем из 5 слов и с 2 запятыми – например
«Ежики плакали, кололись, но продолжали домогаться до кактуса», занести ее
в переменную $s и с помощью регулярного выражения поменять местами
первые два слова. Результат отобразить.
2.При помощи регулярного выражения изменить все буквы в
придуманной выше фразе на заглавные. Результат отобразить.
3.Удалить из фразы слово (слова), ограниченные запятыми включая
разделяющие запятые. Результат отобразить.
4.Удалить из фразы слова короче 4 букв. Результат отобразить.
5.Считать на сервере и отобразить в окне браузера содержимое любого
html-файл, включающего отображение текста жирным шрифтом. Заменить в
отображении буквы, выделенные жирным шрифтом, на буквы с наклоном.
Исходный файл и результат преобразования распечатать на html странице.

Ход работы:
файл index.html /home/var/www/html/is1-02/Labs/index.html
<form id="form13" method="GET">
Строка: <br>
<textarea name="st" id="st" cols="45" rows="2">Я как настоящий
кактус, зелёный, пью редко и расту рядом с компьютером.</textarea>
<br>
<input type="button" value=" Задание 1-4 "
class="ButtonSumbit" onclick="sendPost_13()">
<input type="button" value=" задание 5 "
class="ButtonSumbit" onclick="lisa()">
</form>
<div id="lab14"></div>
файл Lab12.html /home/var/www/html//Lab13bl.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="/is1-02/Labs/style/stylelida.css" type/css">
<title>Л/р №8</title>
</head>
<body>
"Первым поэтом был тот, кто сравнил женщину с цветком",
<b>а первым сатириком - тот, кто сказал, что этот цветок кактус.</b>
Лист
Лабораторная работа №13
ТОГУ, ИС(аб)-71, Белим Л.В.
по курсу АИС 6
</body></html>

файл Белим13_1-4.pl /home/var/www/html/Белим13_1-4.pl


#!/usr/bin/perl
require("cgi-lib.pl");
print &PrintHeader;
#use utf8;
$method=$ENV{'REQUEST_METHOD'};
#Если метод - POST, то получаем параметры со стандартного ввода,
#Иначе - из переменных среды
if ($method eq 'POST')
{
$string=<STDIN>;
}
else
{
$string=$ENV{'QUERY_STRING'};
};

@pars=split("&",$string);
foreach $item(@pars)
{
($name,$value)=split("=",$item);
#заменяем все + на пробелы
$value=~tr/+/ /;
#заменяем последовательности с кодами символов на символы
$value=~ s/%(..)/pack("c",hex($1))/ge;

$PARAM{$name}=$value;
$s=$value;
};

@mas=split(" ",$s);

#1меняем местами первые два слова.


($first, $second, $all)= split(/ /,$s,3);
$pop=$second." ".$first." ".$all;
#$test=$s;
#$test =~ s/(\w+)\s(\w+)/$2 $1/;

#2 Заменяем на большие буквы


$CapsLockString=$s;

$CapsLockString =~ tr/ю/Ю/;
$CapsLockString =~ tr/с/С/;
$CapsLockString =~ tr/р/Р/; Лист
Лабораторная работа №13
ТОГУ, ИС(аб)-71, Белим Л.В.
по курсу АИС 6
$CapsLockString =~ tr/ч/Ч/;
$CapsLockString =~ tr/т/Т/;
$CapsLockString =~ tr/х/Х/;
$CapsLockString =~ tr/ы/Ы/;

$CapsLockString =~ tr/у/У/;
$CapsLockString =~ tr/ц/Ц/;
$CapsLockString =~ tr/ё/Ё/;
$CapsLockString =~ tr/ь/Ь/;
$CapsLockString =~ tr/ъ/Ъ/;
$CapsLockString =~ tr/э/Э/;
$CapsLockString =~ tr/я/Я/;
$CapsLockString =~ tr/ф/Ф/;
$CapsLockString =~ tr/а-я/А-Я/;
$CapsLockString =~ tr/a-z/A-Z/;

#3 разделим предложение, используя как разделитель запятую


@massA=split(/([,])/, $s);
$text1="";
$cntr=0;
while ($massA[$cntr])
{
$cntr++;
}

for (my $i=0;$i<$cntr;$i++)


{
#Если это слово начинается с запятой, и слудующее слово тоже (пустое
слово, состоящее из пробелов, не учитываем)
if (($massA[$i] =~ /,/) && ($massA[$i+2] =~ /,/))
{
#То просто пропускаем это слово
$i=$i+1;
}
else
{
$text1=$text1." ".$massA[$i];
}}

$text1=~tr/,/ /;
#4 идем по массиву если символов в ячейке более 4 оставляем идем дальше
$temp="";
foreach $i(@mas)
{if(length($i)/2>=4)
{
$temp =$temp." ".$i;
} Лист
Лабораторная работа №13
ТОГУ, ИС(аб)-71, Белим Л.В.
по курсу АИС 6
}
print "<html>
<head>
<meta charset='utf-8'>

<title>
Отправка формы на сервер
</title>
</head>
<body>
Проверка:
<br>
<b>1. Поменять местами два первых слова: </b><br>
$pop
<br>
<b>2. Изменить все буквы на ЗАГЛАВНЫЕ: </b><br>
$CapsLockString
<br>
<b>3. Удалить из фразы слово (слова), ограниченные запятыми включая
разделяющие запятые: </b><br>
$text1
<br>
<b>4. Удалить из фразы слова короче 4 букв: </b><br>
$temp
</body>
</html>";

файл Белим13_5.pl /home/var/www/html/Белим13_5.pl


#!/usr/bin/perl
require("cgi-lib.pl");
print &PrintHeader;
$method=$ENV{'REQUEST_METHOD'};
#Если метод - POST, то получаем параметры со станартного ввода,
#Иначе - из переменных среды
if ($method eq 'POST')
{
$string=<STDIN>;
}
else
{
$string=$ENV{'QUERY_STRING'};
};
@pars=split("&",$string);
foreach $item(@pars)
{
($name,$value)=split("=",$item);
#заменяем все + на пробелы Лист
Лабораторная работа №13
ТОГУ, ИС(аб)-71, Белим Л.В.
по курсу АИС 6
$value=~tr/+/ /;
#заменяем последовательности с кодами символов на символы
$value=~ s/%(..)/pack("c",hex($1))/ge;

$PARAM{$name}=$value;
$s=$value;
};

open (my $F1,"Lab13bl.html");


read $F1, $s, 5000, length($s);
@mas=split(" ",$s);
$OutputText = $s;
$OutputText=~tr/<b>/<i>/;
$OutputText=~tr/<\/b>/<\/i>/;
print "<html>
<head>
<meta charset='utf-8'>
</head>
<body>Исходный текст: <br>
$s
<br>Исправленый: <br>
$OutputText
</body>
</html>";

файл лр13.js /home/var/www/html/script/ лр13.js


function sendPost_13()
{
var r_args =
"&st="+encodeURIComponent(document.getElementById("form13").st.value);

SendRequest("post", r_args, "../../../Белим13_1-4.pl", print_13, "false", "");


}
function lisa()
{
var r_args;
SendRequest("post", r_args, "../../../Белим13_5.pl", print_14, "false", "");

Вывод: Выполняя данную лабораторную работу, я изучила синтаксиса


регулярных выражений Perl, использование регулярных выражений для
разработки динамических Web-страниц.

Замечания: Отсутствуют
Лист
Лабораторная работа №13
ТОГУ, ИС(аб)-71, Белим Л.В.
по курсу АИС 6
Лист
Лабораторная работа №13
ТОГУ, ИС(аб)-71, Белим Л.В.
по курсу АИС 6

Оценить