Базы данных Oracle - статьи

         

Первые опыты с Perl


Наберите в консольном окошке perl –v и убедитесь, что сиcтема Perl установлена и нужной версии.

Многие языки программирования используются не так, как мыслились их создателям – отчасти или даже полностью. Perl задумывался как язык сценариев для командной оболочки OC, более развитый и переносимый. Сейчас он развился до языка программирования, но полностью цели своего далекого прошлого не изменил. Составим файл scriptexample.pl: print "this is a perl scripting example:\n";

$resultfile = "scott.tables"; $tempfile = "temp.file";

open(TMP, ">$tempfile");

print TMP <<EOF; SET PAGESIZE 0 SET FEEDBACK OFF SET LINESIZE 30 SPOOL $resultfile SELECT table_name FROM user_tables; SPOOL OFF EXIT EOF

print `sqlplus -s scott/tiger <$tempfile`;

print "\nreturn code = ", system "sqlplus -s scott/tiger <$tempfile";

open (TABLES, $resultfile); print "\n\n", <TABLES>;

print "\nend of example\n";

Обратите внимание на следующие особенности:

  • При формировании текста задания вместо простого spool scott.tables указан для примера более общий вариант, указывающий на возможность динамического формирования текста.
  • sqlplus в программе вызывается двумя способами. Первый использует специальные кавычки `...`, а второй – оператор языка system. Второй чуть более длинен, но зато позволяет обрабатывать код завершения программы.
  • Текст, полученный в sqlplus, тут же в программе пожет прочитываться и обрабатываться (print "\n\n", <TABLES>;).
  • В случае Unix в качестве первой строки потребуется добавить что-то вроде #!/usr/bin/perl. Это упростит запуск программы, но в Windows этого можно и не делать.

Наберем в командной строке консольного окошка ОС:

scriptexample.pl

или же

perl scriptexample.pl

Именно благодаря возможностям компоновки сценариев (только чуть затронутым приведенным примером) Perl иногда называют «клейкой лентой информационных систем».

Другую известную особенность языка составляют возможности разбора регулярных выражений. Возьмем пример со страницы и чуть упростим его. Подготовим файл href.pl:

print "$2\n" while m{ < \s* A \s+ HREF \s* = \s* (["']) (.*?) \1 \s* >

}gsix;

Наберем (в синтаксисе Windows):

href.pl C:\Perl\html\release.html

(Файл RELEASE.html входит в стандартную поставку ActivePerl). Обратите внимание, что на экране появились как глобальные адреса ссылок (http, ftp, mailto), так и локальные.



Содержание раздела