Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Простейший ввод-вывод в Perl




 

Оператор <STDIN> читает вводимые с клавиатуры символы до тех пор, пока пользо­ватель не нажмет клавишу Enter. Строка текста, возвращаемая оператором <STDIN>, содержит символ перево­да строки, введенный пользователем при нажатии клавиши Enter. Обычно не жела­тельно, чтобы в конце введенной строки находился символ перевода строки, т.е. тре­буемая строка должна содержать лишь текст. Для удаления символа перевода строки можно воспользоваться следующей функцией:

 

chompимя-переменной

 

Функция chomp удаляет в строке-аргументе завершающий символ перевода строки. Он также возвращает количество удаленных символов – обычно это 1 или 0, если ничего не удалено.

После окончания ввода с терминала надо оповестить Perl, что ввод данных завершен. Для этого нужно набрать символ конца файла (EOF). Конкретное значение этого символа зависит от операционной системы. В UNIX таким симво­лом является Ctrl+D, помещенный в начале строки. В MS-DOS или Windows признаком конца файла являются два идущих подряд символа Ctrl+Z, которые могут располагаться в любом месте текста.

Вывод данных на дисплей производится с помощью функции:

 

printпеременная-или-литерал

 

Форма записи больших фрагментов Web-страницы с помощью функции print является неудобной и поэтому в CGI-программах часто используется другая конструкция, заимствованная из командного интерпретатора UNIXshell и называемая "heredocument" ("документ здесь") или встроенным документом (inlinedocument), имеющая следующий синтаксис:

 

<<метка;

строки-текста

метка

Текст, заключенный между строкой <<метка и сле­дующим вхождением идентификатора метка, расположенного в отдельной строке, трактуется как заключенный в двойные кавычки. Такая конструкция позволяет внутри себя использовать символы, которые при заключении в обычные двойные кавычки необходимо маскировать символом "\", напри­мер, сами двойные кавычки ", символы @, $, %. Между символами << и меткой не должно быть пробела, а закры­вающий конструкцию идентификатор метка должен располагаться в отдель­ной строке и не заканчиваться точкой с запятой.

 

Арифметические, строковые и логические операции Perl

 

Для присваивания в Perl используется оператор при­сваивания "=". Этот оператор помешает значение выражения, находящегося в правой части, в переменную, указанную в левой части.

Операции обычно делятся на унарные операции, выполняемые над одним операндом и бинарные, выполняемые над двумя операндами.

К унарным арифметическим операциям относятся операции "+" и "-", а также операции автоинкремента и автодекремента: "++" и "--". По своему действию эти операции аналогичны соответствующим операциям в языках C, C++, Java и JavaScript, т.е. увеличивают или уменьшают значение операнда на 1.

Кроме указанных унарных операций, в Perl определены так называемые именованные унарные операции, например:

 

- int(5.6234) – возвращает целую часть аргумента (5);

- cos(50) – косинус 50 радиан (0.964966);

- rand(5) – возвращается случайное число в диапазоне от 0 до указанного в аргументе;если аргу­мент отсутствует— возвращается случай­ное число в диапазоне от 0 до 1.

-

Полный список именованных операций находится в разделах perlop и perlfunc справочного руководства. 

Бинарные арифметические операции в языке Perl такие же, как и в других языках программирования: "+" (сложение), "-" (вычитание), "*" (умножение), "/" (деление) и "%" (остаток от деления). Кроме этого, в Perl определена операция "**" (возведение в степень).

Язык Perl может оперировать не только с числами, но и со строками. Некоторые именованные унарные операции для строк приведены ниже:

 

- length("String1") – длинастроки (7);

- lc("ABC") – переводит все алфавитные символы строки в нижний регистр ("abc");

- uc("r21") – переводит все алфавитные символы строки в верхний регистр ("R21").

-

Следует отметить, что операции lc и uc будут выполняться только для строк, в которых используются символы латинских букв.

Бинарным строковым оператором является оператор конкатенации ".". Этот оператор берет строку, находящуюся слева от него, и строку справа и возвращает строку, объединяющую две строки.

Операция повторения x позволяет повторить первый оператор (количество повторений задается вторым операндом), например, результатом выполнения операции "0"x3 будет строка "000".

Операции сравнения скалярных величин определены отдельно для числовых: ">" (больше чем), "<" (меньше чем), ">=" (больше или равно), "<=" (меньше или равно), "==" (равно) и "!=" (неравно) и отдельно для строковых значений: "gt" (больше чем), "lt" (меньшечем), "ge" (больше или равно), "le" (меньше или равно), "eq" (равно) и "ne" (неравно).

В Perl определены также следующие логические операции: ! или not (отрицание), & (побитовое И), | (Побитовое ИЛИ), ^ (побитовое исключающее ИЛИ), >> (побитовый сдвиг вправо), << (побитовый сдвиг влево), &&или and (логическое И), || или or (логическое ИЛИ).

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

- Любая строка, кроме пустой строки "" и строки "0", соответствует логическому значению «истина».

- Любое число, кроме 0, соответствует значению «истина».

- Любая ссылка соответствует значению «истина».

- Любое неопределенное значение соответствует значению «ложь».

Так как логические значения «истина» и «ложь» не имеют однозначной записи, то логические операции && и || в качестве результата возвращают последнее скалярное значение, вы­численное в результате применения операции.

Как и в других производных от C языках, в Perl есть комбинированные операции присваивания, записываемые следующим образом:

 

переменная операция=выражение

 

Эта форма записи эквивалентна следующему оператору:

 

переменная=переменная операция выражение

 

например,

 

$x+=3;

эквивалентно записи

 

$x = $x +3;

 

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

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

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

**
* / % x
+ - .
<<  >>
<><= >= lt gt le ge
== != eq ne
&
|
&&
||

Язык Perl позволяет использовать в выражениях и строки и числа. При этом, в зависимости от ситуации, интерпретатор выполняет автоматическое преобразование чисел в строковое представление и наоборот. Ниже приведено несколько правил, которыми руко­водствуется программа-интерпретатор:

- если из строки можно выделить число, Perl использует число;

- если число используется в строковом выражении, Perl преобразовывает число в строку;

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

 

Операторы передачи управления Perl

Оператор условия

 

Для управления условным выполнением операторов Perl обычно используется оператор if. Синтаксис этого оператора приведен ниже:

 

if(выражение)      # Если выражение истинно...

блок-1 # выполняется этот блок кода.

else

блок-2 # В противном случае выполняется этот блок.

 

где блок-1 и блок-2 – один или несколько операторов Perl. В случае нескольких операторов, блок, как и во всех производных от C языках, должен быть заключен в фигурные скобки.Оператор else и следующий за ним блок может быть опущен (в этом случае, когда выражение ложно, выполняется оператор, следующий за блок-1).

Существует еще одна разновидность оператора if, с помощью которой можно прове­рить значения нескольких выражений и выполнить код, соответствующий истинному условию:

 

if (выражение-1) # Если выражение-1 истинно...

блок-1       # выполняется этот блок кода.

elseif (выражение-2)       # Иначе, если выражение-2 истинно...

блок-2 # выполняется этот блок кода.

else

блок-3       # Если ни одно из выражений не истинно,

# выполняется этот блок.

 

Данный оператор выполняется следующим образом: если выражение, помеченное как выражение-1, истинно — выполняется блок кода блок-1. Иначе управление передается оператору elseif и проверяется значение выражения-2. Если ни выражение-1, ни выражение-2не являются истинными, выполняется блок-3.

Оператор if может иметь другой синтаксис. Если внутри блока имеется только одно выражение, оно может предшествовать if. Так, вместо кода

 

if(условное-выражение) {выражение;}

 

можно написать:

 

выражениеif(условное-выражение);

 

Операторы цикла

 

Оператор while повторяет блок кода до тех пор, пока некоторое выражение истинно. Вот синтаксис этого оператора:

 

while(выражение)

блок

Когда интерпретатор Perl встречает оператор while, проверяется выполнение условия. Если выражение истинно, выполняется блок кода. После выполнения всего блока повторно вычисляется значение выражения, если оно истинно, блок повторяется, например:

 

$counter=0;

while ($counter< 10)

{

$counter++;

}

 

Оператор for является более сложной, но в то же время более универсальной конструкцией для организации циклов в Perl. Его синтаксис выглядит так:

 

for (инициализация; условие; инкремент)

блок

Когда Perl встречает оператор for, выполняется следующая последователь­ность действий:

 

- вычисляется выражение инициализации.

- вычисляется выражение, задающее условие окончания цикла. Если оно ис­тинно, то выполняется блоккода.

- после выполнения блока производится приращение счетчика и снова проверяется условие. Если оно по-прежнему истинно, блок кода выполняется повторно. Этот процесс продолжается до тех пор, пока не перестает выпол­няться условие.

 

Операторы last и next

 

Кроме операторов forи while, управляющих порядком выполнения бло­ков, в Perl имеются операторы для управления программой внутри самих блоков.

Одним из таких операторов является last. С его помощью можно выйти из внутреннего выполняемого блока цикла (этот оператор аналогичен оператору break в C).

Кроме last, в Perl существует также оператор next. Он завершает текущую итерацию цикла и передает управление в начало цикла (так же, как оператор continue в C).

 

Метки

 

Язык Perl позволяет помечать блоки и некоторые операторы циклов (for или while). Для этого перед блоком или оператором помещают специальный идентификатор, который называется меткой, например:

 

MYBLOCK: { }

Имена меток следуют тем же правилам, что и имена переменных, за небольшим исключением: в отличие от имен перемен­ных, метки не должны иметь символов %, $, @. Кроме того, имена меток не должны совпадать с зарезервированными словами Perl. Хорошим стилем считается использование в именах меток только прописных букв.

Метку можно указывать в качестве аргумента в таких операторах, как last и next. Это позволяет досрочно завершить выполнение любого блока операторов.

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 356.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...