Использование отладчика Perl — КиберПедия 

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Использование отладчика Perl

2022-12-30 20
Использование отладчика Perl 0.00 из 5.00 0 оценок
Заказать работу

Может показаться преждевременным говорить сейчас об отладчике Perl. Но использование отладчика может оказаться исключительно полезным при изучении языка Perl. С ним вы можете легкоиспытать все программы, которые приведены в этой главе в качестве примеров. Фактически можно внести любое выражение Perl непосредственно в отладчик, используя его в качестве интерактивногоPerl. Таким способом можно ознакомиться со многими возможностямиязыка, что намного проще, чем создавать и запускать полные скрипты. Отладчик Perl встроен в сам Perl. Можно запустить отладчик,используя ключ -d в командной строке следующим образом:

C:\PERL> Perl -d hello.pl <ENTER>

В таком случае Perl загрузит скрипт hello.pl и начнет отладку. Если вы используете UNIX-систему, то можете поместить комментарий #!/usr/bin/perl -d в самом начале скрипта Perl. Если хотите загрузить Perl с отладчиком без загрузки скрипта, то можетеиспользовать следующую команду: С: \> Perl -de 0 <ENTER> В такомслучае аргумент командной строки -d указывает Perl на необходимость вызова отладчика, а аргумент -e 0 заставляет выполнить Perlскрипт, состоящий из 0 строк. Поскольку скрипт 0 не существует,то Perl просто запустит отладчик. Если Perl установлен на вашусистему корректно, то на экране вы увидите следующие данные, которые говорят, что вы находитесь в отладчике:

Loading DB routines from $RCSfile: perldb.pl,v $$Revision: 4.0.1.3 $$Date: 92/06/08 13:43:57 $ Emacs support available. Enter h for help. main '(p1000159:1): DB<1>

Если Perl выводит ответ, но указывает на ошибку, такую какCan't locate perldb.pl @INC, то, значит, Perl установлен в вашейсистеме некорректно. В таком случае прочитайте readme-файлы, которые сопровождают вашу версию Perl. В отладчике можно набратьлюбое выражение Perl, и он немедленно его исполнит. Дополнительно можно использовать следующие команды отладчика:? h - распечатать в качестве подсказки список команд отладчика? n - вы-полнять до следующего выражения? <CR> - повторить последнюю команду n или s? p выражение - сокращение для команды print выражение? q - окончить работу? r - исполнять до выхода из подпрограммы? s - один шаг по скрипту (со входом в подпрограмму)

Например, следующая команда отладчика использует функциюprint для того, чтобы вывести на экран сообщение Hello World:

DB<1> prinf "Hello World\n"; <ENTER> Hello World DB<2>

Используя отладчик с помощью команды р, можно вывести на экран любое выражение. Для упрощения набора в отладчике можно опускать точку с запятой в конце выражения, поскольку отладчик добавит ее для вас. Наконец, отладчик всегда переходит на новую строку для новой команды. Следующий код иллюстрирует использованиекоманды р: <ENTER>

DB<2> р "Hello World\n" <ENTER> Hello World DB<3>

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

Примечание: Для того, чтобы ввести выражение из многих строк вотладчик (debugger), необходимо использовать символ продолжения<\> конце каждой строки.. Иначе отладчик сообщит о синтаксической ошибке.

Следующая команда иллюстрирует использование символа продолжения при работе с отладчиком:

DB<3> for ($i = 0; $i < 10; $i++) { \ <ENTER> cont: print $i; \ <ENTER> cont: } <EIITER> 0123456789 DB<4>

В этом случае для вывода чисел от 0 до 9 использовался циклfor, который будет подробно рассмотрен в этой главе.

ТИПЫ ДАННЫХ В PERL

Типы данных используются в программах при объявлении переменных. Короче говоря, тип данных определяет то множество значений, которые может принимать переменная, а также набор операций,которые программа может выполнять с ней. В языке Perl данные могут быть числом или строкой символов. Одно значение называетсяскалярной величиной или просто скаляром. Ниже приведены примерыскалярных значений, которые используются в языке Perl:? Десятичные: 127 или 127.0 или 1.27Е2? Шестнадцатиричные: Ox7F или 0x7f? Восьмеричные: 0177 (первый 0 указывает, что используетсявосьмеричное число)? Строка: "Hello World\n" или 'Hello World'

Например, следующая команда использует отладчик Perl для того,чтобы вывести число 0177 восьмеричной системы, соответствующеечислу 127 десятичной:

DB<4> р 0177 <ENTER> 127

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

Примечание: Как вы узнаете, скрипт Perl позволяет использоватьфункцию printf для того, чтобы выводить, значения в вызываемомформате, в таком как восьмеричный или шестнадцатиричный.

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

Примечание: Если вы программируете на С и использовали целочисленное деление с усечением целых чисел автоматически, то, программируя на языке Perl, надо не забыть выполнить усечение вручную, используя функцию int().

Следующая команда иллюстрирует, как Perl обрабатывает числацелого типа и с плавающей запятой:

print 6 & 3; # выведет 2 print 6.9 & 3.1 # print 7 / 2 # выведет 2.3333 не целое print int(7/3) # выведет 2

Точно так же, как Perl преобразует числа с плавающей запятой в целые числа: когда скрипт использует целочисленные значения, он также преобразует числа в строки и наоборот, когда такоепреобразование имеет смысл. Например, если скрипт использует числа в контексте, где только строки имеют смысл, например, при соединении строк, он конвертирует числа в строки. Аналогичным образом, если требуется использовать строки там, где только числаимеют смысл, то Perl конвертирует их в числа. Работая со скриптами Perl, обычно не надо беспокоиться о внутреннем представлениискалярных величин. Perl поддерживает также концепцию булевых значений, но не имеет для их описания специального типа. Как и в С,численное значение рассматривается истинным, если оно не равнонулю. Дополнительно строковое значение рассматривается как истинное, если оно не равно '' или '0'. Некоторые булевы операторы,такие как <>> (больше), возвращают единицу в качестве значения<истинно> и нуль - в качестве <ложно>. Тем самым, ваш скрипт должен просто рассматривать ненулевые величины как строчного типа,так и числового в качестве булева значения <истинно>. СкриптыPerl могут группировать скалярные величины вместе и создаватьсписок (list). Если скрипт хранит список в какой-то переменной,то эта переменная становится массивом (array).

ПЕРЕМЕННЫЕ

Perl поддерживает три типа переменных: скаляры, массивы иассоциативные массивы. Как и в языке С, имена переменных пишутсяс различением строчных и заглавных букв. Таким образом, именаVAR, Var и var описывают различные переменные. Скрипт может иметьскалярную переменную под именем var и переменную-массив, такженазванную var. Они будут различаться в языке Perl в соответствиис контекстом.

Примечание: Переменные Perl нетипизированы, как это делается и вС. Например, скалярная переменная может содержать любой тип скаляра, и приведение типов осуществляется автоматически. Также, каквы могли уже заметить, переменные на языке Perl необязательнодолжны быть объявлены. Если переменная не объявлена, то Perl рассматривает ее как глобальную. Ниже вы познакомитесь с объявлением переменных и их областью видимости.

СКАЛЯРНЫЕ ПЕРЕМЕННЫЕ

Как отмечалось, скалярная переменная может содержать единственное значение. В языке Perl имена скалярных переменных всегда начинаются со знака ($). В еле дующем выражении скалярной переменной $age присваивается значение 35, а переменной $name строковое значение <Bob>. Затем используется функция print длявывода значения каждой из переменных:

$age = 35; $name = 'Bob'; print ($name,'is',$age);

Если вы сохраните эти выражения в файле под именемSCALAR.PL, то сможете запустить программу следующим образом:

C:\PERL> Perl SCALAR.PL <ENTER> Bob is 35

МАССИВЫ

Как было сказано выше, массивы представляют собой переменные, принимающие в качестве значения список из скалярных величин.Следующий текст программы на языке Perl иллюстрирует объявлениепеременных типа массив и их инициализацию:

   @days = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); print(@days); # выведет 'SunMonTueWedThuFriSat' print($days[4]);  # выведет 'Thu' @weekdays = @days[1..5]; # значение ('Mon','Tue','Wed','Thu','Fri') @emptylist = ();   # постой список

Ссылка на переменные типа <массив> обычно начинается со знака (@) и сопровождается значениями в квадратных скобках ([ ]).Как и в программировании на языке С, индексами массивов дляскриптов всегда являются переменные целого типа, которые обычноначинаются с нулевого значения. Вы увидите исключения из этихдвух правил в примерах, которые будут объясненены в этой главе.Третье выражение ($days[4]) служит примером массива, который ссылается на скалярное значение. Поскольку он содержит только одинэлемент, результирующее значение представляет собой скаляр. Еслииспользовать знак ($) вместо знака (@), то скрипт будет ссылаться на скалярную величину. Это замечание является очень важным. Квадратные скобки указывают, что скрипт ссылается на массив.Знак $, в свою очередь, означает ссылку на скалярную величину.Инициализация массива @weekdays осуществляется путем выборки части массива @days. В предыдущем примере массив @days использовался без индекса. Когда индекс опущен, Perl ссылается на весь массив. Аналогичным образом, в предыдущем примере массив @days инициализировался списком литералов. Кроме того, что массиву могутприсваиваться в качестве значений литералы, скрипт может такжеприсваивать массивам значения переменных или даже других массивов, как показано ниже:

@stuff = ($age, $name) @FriendsOfMine = ('Joe','Mary', @FriendsOfYours);

В следующем примере используются части массивов:

@weekend = @days[0,6]; # результат ('Sun','Sat') print (@days[1..5,0,6]);      # выведет 'MonTueWedThuFriSunSat'

Если скрипт использует переменную типа массив в контекстескаляра, то значением служит число элементов массива. Скалярнымконтекстом является такой контекст, где только скалярные значения имеют смысл. Например, следующее выражение использует скалярный контекст для массива stuff для того, чтобы определить числоэлементов содержащееся в массив. Если число элементов, больше илиравно 2, то скрипт выдает сообщение и заканчивает исполнение:

(@stuff >= 2) || die "Too much stuff! \n";

Функция die служит директивой языку Perl закончить выполнение и выдать при этом указанное сообщение. Если сообщение не содержится, то функция просто заканчивает выполнение скрипта. Perlтакже поддерживает специальную конструкцию $# переменная, которая возвращает последнее значение индекса в массиве. Например,следующее выражение for использует $[ для того, чтобы определитьначальное значение индекса массива, и $# для определения последнего из элементов массива. При этом с помощью выражения for выводятся значения каждого из элементов:

for ($i =$[; $i <= $#stuff; $i++)  {      print $stuff[$i];  }

Записанный цикл for можно заменить следующим эквивалентнымвыражением:

Print @stuff;

Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.