Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Регулярни изрази с Perl.
  1. Регулярни изрази с Perl-1
  2. Регулярни изрази с Perl-2
  3. Регулярни изрази с Perl-3
jan
     
Автор  jan (16.12.2004 14:32)  съобщение до автора
Погледнат  2813 пъти  добави към любими
Оценка  добави коментар
Гласове  8  изпрати на приятел
Коментари  (1)  абонирай се за Perl
    Страница 1 / 3

 



Perl е многоцелеви език. Макар, че с него е трудно да се пишат приложения с графичен потребителски интерфейс, той често се използва за писане на CGI скриптове. Всеки си има препочитания и аз го използвам (макар и рядко) за обработка на големи текстови файлове. Е, тук няма да става въпрос за такива файлове, а за следното:
Постановка на задачата:

Нека имаме текстови файл test.pas с програмен код в случая Pascal. Ще напишем скрипт на Perl, който прочита test.pas и го конвентира в test.html, като запазените думи на езика са удебелени.

Основната ни цел ще бъде да се покаже мощта на регулярните изрази в Perl. Не става въпрос за запознаване с тях, а по-скоро за нова среща.

Читателите трябва да са запознати с основите на Perl, включително да имат малки познания за регулярните изрази.

За съдържание на test.pas, читателят може да използва всеки файл, който съдържа програма на pascal. Например:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
test.pas

type
 WorkMas
=array[1..10000]of Integer;
var
 d
:WorkMas;
 
i:Integer;
begin
 
for i:=1 to 10000 do
 
begin
  d
[i]:=0;
 
end;
end.


И така, да започваме:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
open(F,"test.pas");
open(G,"+>test.html");
@lines=<F>;

print G "<html>n";
print G "<head>n";
print G "<META http-equiv='Content-Type' content='text/html; charset=windows-1251'>n";
print G "<title>n";
print G "Регулярни изрази с Perln";
print G "</title>n";
print G "</head>n";
print G "<body>n";
print G "<pre>n";



print G "</pre>n";
print G "</body>n";
print G "</html>";


Затваряме файловете

CODE
1
2
close F;
close G;

Край на скрипта.

Какво правим по-горе? Първо ще си осигуряваме основната структура за html файла. Отваряме файлът test.pas за четене и го асоциираме с файловият маниполатор F. Напомням, че това е файлът, който ще конвентираме.

CODE
1
open(F,"test.pas");

Отваряме файлът test.html всеки път за нов запис и го асоциираме с файловият маниполатор G. В този файл ще бъде резултатът.

CODE
1
open(G,"+>test.html");

Записваме редовете на test.pas в масива lines. Така всеки ред на test.pas се явява елемент на lines.

CODE
1
@lines=<F>;

Сега в test.html си осигуряваме основната структура на html файла. Тук символите "n" ни осигуряват записването на таговете в test.html на нов ред-за постигане на по-голяма прегледност.
Между двата реда

CODE
1
print G "<pre>n";

 и

CODE
1
print G "</pre>n";

ще бъде основният код на скрипта. Колкото и странно да изглежда тези редове ще са ни достатъчни:-)
Ако стартираме този скрипт като резултат ще получим една празна HTML страница. Остава само да запълним тази страница с нещо полезно (или не толкова:-). Изрично споменавам отново, че кодът, който ще добавяме ще се намира между редовете

CODE
1
print G "<pre>n";

 и

CODE
1
print G "</pre>n";

Това ще означаваме така:

CODE
1
2
3
4
5
6
7
.................

print G "<pre>n";
 код
print G "</pre>n";

................

И така, да обходим всички елементи на @lines (в който са записани редовете на test.pas-асоцииран с F) и да ги запишем в test.html-асоцииран с G.

CODE
1
2
3
4
5
6
7
8
.................
print G "<pre>n";
   
foreach(@lines)
    {
       
print G $_;
   
}
print G "</pre>n";
................



  Следваща страница >> 


Ключови думи: perl програмиране текстов файл регулярни изрази


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

Навсякъде където имаме записване във файл на стринг с print, накрая не е изведен коректно знака за нов ред. Трябва да се пише "\n", a имаме само "n".

  jan на 15.10.2008 11:26

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008