Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 9
На сайте нет зарегистрированных пользователей

Пользователей: 13,370
новичок: dogoco6
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Игра Sokoban на Delphi + Блок схемы
Создание последовательности окон и передвижение окон по экрану на Turbo ...
База данных - словарь терминов на Delphi + Пояснительная записка

Функции, относящиеся к управлению выполнением программы
caller

Возвращает контекст выполняемой подпрограммы, если вызвана без параметра. В скалярном контексте возвращает имя пакета, в котором находится вызывающая данную подпрограмму (т.е. если наша подпрограмма вызывается из другой подпрограммы, функции eval() или require() ), или неопределенное значение в противном случае. В списковом контексте возвращает список с разнообразными сведениями. Можно передать в качестве параметра число, определяющее уровень вложенности получаемой информации, т.е к какой подпрограмме она относится: 0 - наша подпрограмма; 1 - подпрограмма, вызывающая нашу, и т.д.
Полный синтаксис:

($package, $filename, $line, $subroutine, $hasargs, $wantarray, $evaltext, $is_require) = caller($i);



--------------------------------------------------------------------------------
die

Вне тела функции eval() выводит значения элементов списка, заданного параметром СПИСОК, в стандартный файл ошибок STDERR и завершает выполнение сценария Perl с текущим значением специальной переменной $!. Если используется в теле функции eval(), то сообщение об ошибке помешается в переменную $@ и функция eval() заверщается с неопределенным значением. Такое поведение позволяет использовать функцию die() для генерирования исключительных состояний.
die СПИСОК

--------------------------------------------------------------------------------
do

В действительности не является функцией. Выполняет последовательность операторов Perl, заданных в блоке БЛОК, и возвращает значение последнего выполненного оператора. Если параметром является ВЫРАЖЕНИЕ, то рассматривает его значение как имя файла, который загружает и выполняет как последовательность операторов Perl. Если не удается прочитать файл, возвращает неопределенное значение и помещает в переменную $! сообщение об ошибке; если не может откомпилировать файл, то также возвращает неопределенное значение и помещает сообщение об ошибке в переменную $@. Если содержимое файла успешно откомпилированно, то возвращает значение последнего выполненного оператора.
do БЛОК
do ВЫРАЖЕНИЕ

--------------------------------------------------------------------------------
dump

Создание дампа ядра, которое системной командой undump может быть преобразованно в двоичный выполняемый файл. Если задан параметр МЕТКА, то при повторном вычислении двоичного файла, сначала выполнится оператор goto МЕТКА;. Функция устаревшая - существует компилятор из Perl в C, который выполняет ее функцию.
dump МЕТКА

--------------------------------------------------------------------------------
eval
Синтаксис 1:
eval EXPR


Функция eval() рассматривает параметр EXPR как текст Perl-программы, кампилирует его и, если не обнаруживает ошибок, выполняет в текущем вычислительном окружении. Если параметр EXPR отсутствует, вместо него по умолчанию используется глобальная переменная $_. Компиляция програмного кода EXPR осуществляется при каждом вызове функции eval() во время выполнения основной программы. Если выполнения мини-программы EXPR завершается успешно, функция eval() возвращает значение последнего выражения, вычисленного внутри EXPR. Если код EXPR содержит синтаксические ошибки, или обращение к функции die(), или возникла ошибка во время выполнения EXPR, то в специальную переменную $@ помещается сообщение об ошибке, а функция eval() возвращает неопределенное значение.


Если скалярной переменной не присвоено никакое допустимое значение (число, строка или ссылка), то говорят, что она имеет неопределенное значение. Неопределенные значения возникают в различных случаях, например, при попытке чтения данных после достижения конца файла или в результате системных ошибок. Неопределенное значение представляется пустой строкой "", но его следует отличать от определенного значения, равного "". Например, в результате выполнения операторов


$e = eval '$a = 1/0'; # деление на 0
$b = "";
print "a= $a\n" if defined $a;
print "e= $e\n" if defined $e;
print "b= $b\n" if defined $b;





переменные $a и $e будут иметь неопределенное значение, а переменная $b - определенное значение "".


Для того чтобы определить, имеет выражение EXPR определенное значение или нет, существует функция defined EXPR, возвращающая соответствующее булевское значение. В данном примере результатом выполнения будет вывод единственной строки

b=


Специальная переменная $@ служит для запоминания сообщения об ошибке, возникшей при последнем обращении к функции eval().


Существует вторая форма функции eval()
Синтаксис 2:
eval BLOCK,


где BLOCK придставляет собой блок - последовательность операторов, заключенную в фигурные скобки. Вторая форма отличается от первой тем, что синтаксический анализ параметра BLOCK осуществляется всего один раз - во время компиляции основной программы, содержащей обращение к функции eval(). Таким образом, если параметр BLOCK содержит синтаксические ошибки, то они обнаружатся на этапе компиляции основной программы. При использовании первой формы синтаксические ошибки обнаружатся только во время выполнения.


Основным применением функции eval() является перехватывание исключений. Исключением мы называем ошибку, возникающую при выполнении программы, когда нормальная последовательность выполнения прерывается (например, при делении на нуль). Обычно реакцией на исключение является аварийное завершение программы. Язык Perl предоставляет возможность перехватывать исключения без аварийного выхода. Если исключение возникло в основной программе, то программа завершается. Если ошибка возникла внутри мини-программы функции eval(), то аварийно завершается только функция eval(), а основная программа продолжает выполняться и может реагировать на возникшую ошибку, сообщение о которой ей достанется через переменную $@.


В следующем примере функция eval() применяется для перехватывания ошибки, связянной с делением на 0 при вычислении функции ctg(x). Используются встроенные функции sin, cos и warn. Последняя функция осуществляет вывод сообщения, задаваемого ее аргументом, на стандартное устройство вывода ошибок STDERR.


Пример :
#!/bin/perl
$fi = 0.314159265358979;
$f = '$ctg = cod($x)/sin($x)';
for $i (0..10) {
$x = $i*$fi;
eval $f;
print "x= $x ctg(x) = $stg\n" if defined $ctg;
warn "x= $x ", $@ if not defined $ctg;
};
Вывод программы выглядит следующим образом


x= 0 Illegal division zero at (eval 1) line 1.
x= 0.314159265358979 ctg(x) = 3.07768353717526
x= 0.628318530717958 ctg(x) = 1.37638192047118
. . .





Иногда бывает полезно искусственно вызвать исключительную ситуацию. Для этого можно воспользоваться функцией die() LIST. Назначение функции die() - генерировать исключения. Если функция die() вызывается в основной программе вне функции eval(), то она осуществляет аварийное завершение основной программы и выводит сообщение об ошибке LIST на стандартное устройство вывода ошибок STDERR. Если она вызывается внутри функции eval(), то осуществляется аварийное завершение eval() и помещает сообщение об ошибке в специальную переменную $@.

--------------------------------------------------------------------------------
exit

Немедленно прекращает выполнение программы с кодом завершения, равным значению параметра ВЫРАЖЕНИЕ. Если параметр не задан, программа завершается с кодом 0.
exit [ВЫРАЖЕНИЕ]

--------------------------------------------------------------------------------
return

Выход из подпрограммы, функции eval() или do ФАЙЛ с кодом завершения равным значению параметра ВЫРАЖЕНИЕ. Если в подпрограмме, функции eval() или do ФАЙЛ не используется эта функция, то они завершаются с кодом, равным значению последнего выполненного оператора.
return ВЫРАЖЕНИЕ

--------------------------------------------------------------------------------
sub

В действительности это не функция, а объявление подпрограммы: анонимной (без параметрп ИМЯ, но с блоком операторов БЛОК), прототипа (без блока операторов БЛОК) и нормальной.
sub БЛОК
sub ИМЯ
sub ИМЯ БЛОК

--------------------------------------------------------------------------------
wantarray

Возвращает значение Истина, если контексту выполняемой подпрограммы требуется списковое значение, и Ложь, если требуется скалярное значение. Возвращает неопределенное значение, если подпрограмме требуется безразличный (void) контекст.
wantarray
Опубликовал Kest January 10 2009 14:11:50 · 0 Комментариев · 7741 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Szwavepanel
Быстрое создание ...
LaserTank [Исходн...
Flud Vkontakte.ru
Киллер окон
Векторный редакто...
Программирование ...
Динамические за...
Visual Studio 200...
Delphi на примерах
Учебник для продв...
De Knop
Запрет гостям ск...
Разработка интерн...
AddPage [Исходник...
Ведение справочны...
Редактор текста (...
THttpScan v4.1
ICQ
Графика в проекта...

Топ загрузок
Приложение Клие... 100774
Delphi 7 Enterp... 97836
Converter AMR<-... 20268
GPSS World Stud... 17014
Borland C++Buil... 14191
Borland Delphi ... 10291
Turbo Pascal fo... 7374
Калькулятор [Ис... 5984
Visual Studio 2... 5207
Microsoft SQL S... 3661
Случайные статьи
Проверить, правиль...
Что означают терми...
по любому протоколу
Некоторые фрагмент...
Совмещение имен в IDL
Запуск формы для р...
Вырезание, вставка...
Джет Казино
Настройка страницы
Они могли произойт...
Использование прог...
9x/NT не установле...
Скачать приложение...
Работа с внешней п...
Табл. 13-14.
Официальный сайт S...
Графический и HTML...
АБСТРАКТНЫЕ ТИПЫ Д...
Процедура Arc - че...
Введение в регуляр...
Игровой автомат Se...
Повышенная надежно...
Формы расширенного...
Фил ьтрация группо...
Коммуникационное п...
Статистика



Друзья сайта
Программы, игры


  • novakdecor
  • термопанели высокого качества! Монтаж
  • novakdecor.ru
Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?