Каталог статей
Главная » Статьи » Язык программирование Perl » Описание Языка Perl |
Скалярные
данные. Фундаментальной основой для работы с данными в Perl является скаляр (scalar). Скаляр-это простейший вид данных, которыми манипулирует Perl. Скаляр-это либо число хранящейся в формате вещественнных чисел(например, 25 или 3,25е20), либо строка символов(например, hello или hello world). Хотя в общем-то числа и строки- это совершенно разные вещи, в Perl они используются практически как взаимозаменяемые объекты. Над скалярной величиной можно производить операции(например, сложения или конкатенацию), как правило, результат также является скалярным значением. Скалярные данные могут читаться из файлов и устройств и могут записываться на них.
Числа. Хотя
скаляр-это либо число, либо строка, в данный момент нам будет полезно
рассмотреть их отдельно. В Perl число-это скалярное значение, т.е. один блок
информации. Число может быть представлено числовым литералом, значение которого
нельзя изменить во время выполнения сценария. В отличие от большинства языков программирования
(например, С/С++, Java, Pascal и т.д.) Perl не требует указания типа числа.
Например, не нужно объявлять число целым или десятичным. По
умолчанию Perl предполагает, что все числа представлены в десятичной системе
счисления, однако при необходимости можно использовать экспоненциальное,
восьмеричное или шестнадцатеричное представление. Для того чтобы записать число
в восьмиричной системе счисления, необходимо предварить его символом нуля(0). Аналогичным
образом для того, чтобы представить число в шестнадцатеричной системе
счисления, необходимо предварить его символом нуля(0) и последующей буквой
х(набранной в верхнем или в нижнем регистре). Perl
предоставляет достаточно много операторов, которые можно использовать для
проведения вычислений. Числа, над которыми с помощью операторов проводятся
вычисления, называются операндами. Например, при вычислении значения выражения
3+5 применяются операнды 3 и 5, которые используется вместе с оператором
сложения(+) для получения результата, равного 8. Следует отметить, что
вычисление выражения не всегда будет проведено последовательно слева направо. Порядок
вычисления зависит от приоритета операторов. Интерпретатор
Perl автоматически конвертирует число в строку или строку в число в зависимости
от их использования сценарии. Например, если поместить строку в выражение, в
котором проводятся математические вычисления, то перед их проведением Perl
попытается перевести строку в формат числа. Если строка начинается с символов
цифр, за которыми следуют какие-либо другие символы, то Perl выделит из строки
ее "числовое” начало и отбросит всю остальную часть строки. Если же строка
начинается не с цифр, то Perl автоматически преобразует ее в нуль(0). Например:
$var1=”50xy”; $var2=50; $var3=$var1+$var2; print $var3; Можно
и так: print "50xy”+50;
Числа
в восьмиричной и шестнадцатеричной системах счисления в строковом виде могут
быть неправильно распознаны Perl. Чтобы этого не случилось, следует
использовать функции oct и hex.
print " print "не правильно\n”; print hex(" print "правидьно\n”; Результатом
выполнения сценария будут строки 105
не правильно 195
правильно Литералы с плавающей запятой Литерал-это способ представления даннных в исходном тексте вашей программы как входной информации(Данные, которые читаются из файлов или записываются в файлы, трактуются похоже, но не совсем так.) Perl принимает полный набор литералов с плавающей запятой. Допускаются числа с десятичными запятыми и без них(включая необязательный префикс "плюс” или "минус”. Кроме того, можно использовать показатель степени числа десять(экспоненциальное представление) с буквой Е. Например: 1.25 7.25е45 #7.25 умножить на 10 в 45 степени -6.5е24 # минус 6.5 умножить на 10 в 24 степени -12е-24 # минус 12 умножить на 10 в -24 степени Целочисленные литералы Целочисленные литералы также весьма просты, например: 12 18 -1500 255 6129804028768 Последнее число трудно прочитать. Perl разрешает включать в целочисленные литералы знаки подчеркивания, так что число может быть записано в следующем виде: 61_298_040_283_768 # Это то же значение просто оно выглядит немного иначе Строки В Perl строки представляют собой последовательности букв, цифр и знаков препинания, коды которых лежат в диапазоне ASCII 32-126. Как и числа, строки могут иметь литеральное представление (способ представления строкового значения в Perl-программе). В строке кавычки определяют начало и конец строки и интерпретатор Perl рассматривает строку в качестве единицы информации. В том случае, когда строка заключена в одинарные кавычки, Perl рассматривает ее как литералы и не пытается интерпретировать ее каким-либо образом содержащейся в ней символы. Литерал не может быть изменен в процессе выполнения сценария. В том случае когда строка заключена в двойные кавычки в нее можно включать инструкции, который интерпретатор Perl должен будет соответствующим образом обработать. Теперь, обратная косая черта приобретает полную силу и может задавать определенные символы и вообще любой символ в восьмеричном и шестнадцатеричном формате. Широко используется сочетания обратной косой черты с различными символами так называемая управляющая последовательность с обратной косой. Полный перечень управляющих последовательностей, которые применяются в строках в двойных кавычках приведена ниже. \n - Новая строка \r - Возврат курсора \t - Табуляция \f - Подача страницы \b - Backspace \a - Звуковой сигнал \e - Escape (символ Escape в ASCII) \cC - Символ «Control» (в данном случае Control-C) \\ - Обратная косая черта \” - Кавычка
Еще одна особенность строк в двойных кавычках в том, что в них производится интерполяция переменных, т.е при использовании строки все скалярные переменные и массивы в ней заменяются их текущими значениями. Строковые операторы Одним из наиболее распространенных операторов, позволяющих манипулировать значениями строковых переменных, являются операторы объединения и повторения строк. С помощью оператора объединения(точка .) производится слияние двух строк, например "$variable1”.”$variable2”. Помимо строковых переменных, аналогичным образом можно объединять и литералы, например "define1”.”define2”, а также комбинации литералов и переменных, например "variable1”.”define1”. Если использовать оператор объединения вместе с числом, то Perl проведет автоматическое преобразование этого числа в строку. Perl не добавляет символ пробела между объединяемыми строками. Для разделения объединяемых строк пробелом необходимо включить этот пробел в конец одной из объединяемых строк. Оператор повторения(х) отображает указанное число раз последовательность символов, находящуюся в строковой переменной. Примером действия этого оператора может служить часто встречающееся разбиение текста на разделы с помощью длинных строк, состоящих только из символов #. Помимо операторов объединения и повторения, Perl предоставляет еще несколько функций для работы с данными, хранящимися в строковых переменных. С помощью оператора повторения можно « размножать» управляющие последовательности. Результатом выполнения фрагмента кода $var=”Hello”x 5; $print "World”; $print $var; Будет строка HelloHelloHelloHelloHelloWorld Когда Perl обрабатывает строку с переменными, он представляет вместо переменных их текущее значение. Отметьте, что интерполяция переменных может быть применена только к строкам, заключенным в двойные кавычки. Если поместить переменную внутрь строки, заключенную в одинарные кавычки, то Perl не заменит имя этой переменной ее текущим значением. Скалярные переменные Скалярная переменная предназначена для хранения одного скалярного значения, Например 101 или "hello”. Значение, присвоенное скалярной переменной, может быть изменено во время выполнения сценария Perl. Имена скалярных переменных состоят из знака доллара($) и буквы, за которой могут следовать еще несколько букв, цифр и знаков подчеркивания. Скалярной переменной необходимо присвоить какое-нибудь начальное значение, которое может представлять собой строку или число. При присвоении переменной строкового значения последнее должно быть заключено в кавычки. После присвоения значения числовой или строковой переменной доступ к этому значению в сценарии Perl осуществляется по имени переменной. Ниже приведена примеры имен переменных в соответствии с приведенными выше рекомендациями. $Variable_Name_0=100; $Variable_Name_1=” one hundred”; $Variable_Name_2=$Variable_Name_2+50; Последнее выражение типа $Variable_Name_2=$Variable_Name_2+50 (где переменная стоит по обе стороны от оператора присваивания) встречаются довольно часто, поэтому в Perl применяется сокращенный метод записи операции изменения переменной-оперрация присваивания с вычислением. Например, следующие две строки эквивалентны: $Variable_Name_2=$Variable_Name_2+50; # без операции присваивания с вычислением $Variable_Name_2+=50; # с операцией присваивания с вычислением Эквивалентны и эти строки: $Variable=$Variable*14; $Variable*=14; Другой распространенной операцией присваивания является операция конкатенации строк: $string=$string.””; $string.=””; Почти все двоичные операции, записанные таким образом, допустимы. Например, операция возведения в степень записывается как **=. Так, $variable**=5 означает возвести число, содержащееся в переменной $variable, в степень пять и пеметить результат обратно в $variable. В тех случаях, когда переменная применяется для определения собственного значения, очень часто проводится увеличение или уменьшение значение этой переменной на единицу. Чтобы уменьшить код, необходимый для проведения таких вычислений, Perl предоставляет операторы автоинкремента(++) и автодикремента(--). Результатом выполнения фрагмента кода $Variable=5; ++$Variable; print $varible; будет строка: 6 Здесь операция "++" используется как префиксная, т.е. знак операции стоит слева от операнда. Автоинкремент можно записывать и в суффиксной форме(справа от операнда). В этом случае результатом выражения является старое значение переменной, которое она имела до инкрементирования. Например: $variable=+10; $variable_1=$variable++; # $variable_1 равно 10, а $variable равно 11 print "$variable_1\n", "$variable"; Операция авто декремента "--" похожа на операцию автоинкремента, но здесь не прибавляется единица, а вычитается. Как и операция автоинкремента, операция автодекремента имеет две формы-префиксную и суфиксную. Например: $a=10; --$a; $a=$a--; Специальная переменная. В Perl предусмотрена специальная переменная, значение которой используется во многих выражениях, если явно не указана другая переменная. В них хранится информация, применяемая интерпретатором Perl для отладки сценариев, установки по умолчанию для команд Perl и коды ошибок. Некоторым специальным переменным может быть присвоено значение. Присвоив значение специальной переменной, ее можно использовать. Например: $_="Hello World"; print; Подобное неявное использование переменной $_ может создать определенную неразбериху, учитывая, что этой переменной значение может присваиваться задолго до ее применения. $, -Хранит значение символа-разделителя функции print $! -При использовании в числовом контексте содержит текущий номер системной ошибки. При использовании в строковом контексте содержит описание ошибки. $@ -Хранит сообщение об ошибке, сгенирированное Perl при попытке вычислить неверный код. $0 -Хранит имя файла сценария, обрабатываемого в данный момент интерпретатором Perl. $[ -Хранит номер индекса первого элемента в массиве и первого символа в строке. Значение по умолчанию равно нулю (0). $/ -Хранит символ, который разделяет введенные в сценарий записи. Значением по умолчанию является символ новой строки. $\ -Хранит значение символа, который разделяет записи, выведенные функцией print. Получение данных от пользователя Оператор чтения строк <STDIN> (STDIN-это аббревиатура от standart input-стандартный ввод) позволяет считывать информацию, введенную с клавиатуры. Оператор чтения строк состоит из двух частей-угловых скобок и дескриптора файла. STDIN представляет собой стандартный дескриптор файла, который Perl использует для доступа к вводимой с клавиатуры информации. В именах дескрипторов файла рекомендуется использовать лишь прописные буквы. Таким образом легче отличить дескриптор файла от имени переменной или функции, что упрощает создание и чтение сценария. Например. $var=<STDIN>; Print $var; Массивы в perl Массивы представляет собой пронумерованную последовательность хранящую список. По указанным выше свойствам массивы относятся к упорядоченным однородным ограниченным структурам данных с произвольным доступом. Например: @array("Tim", "Maya", "Martin"); Для того чтобы получить доступ указанным выше эленту массива, следует обратиться к массиву как к скалярной переменной и указать в квадратных скобках номер необходимого элемента. Например: @array=("Tim", "Maya", "Martin"); print $array[2]; Имя массива в данном случае "array" существует в отдельном пространстве имен, не зависимом от скаляров. Для выполнения какой-либо операции со всеми его элементами одновременно, следует использовать имя этого массива вместе с соответствующим проводимой операции кодом. Необходимо также помнить, что миссивы в Perl нумеруется начиная с нуля "0". Например: @array=("Tim", "Maya", "Martin"); print @array; В Perl существует специальная синтаксическая конструкция списков: @array=(1...5). Эквивалентен последовательности четырех операторов присваивания значений элементов массива с помощью индекса: @array=(1, 2, 3, 4, 5); Разделение строки С помощью функции split строка может быть разделена на несколько частей, называемых подстроками. split /Шаблон/ строка, ограничение разделяет строку на подстроки. Используя функцию split, интерпретатору Perl необходимо указать разделитель, в соответствии с которым будет определяться место разделения строки. Полученные в результате разделения подстроки возвращаются в форме списка, при этом разделитель из них удаляется. Пример: my splitfunc="Tim:Dino:David:Maya"; @splitList=slit/:/, $splitfunc; foreach (@splitlist) {print $splitfunc} Результат будет строка: TimDinoDavidMaya Одним из параметров функции split-это ограничение Его можно задавать целым положительным числом. Пример: $slitfunc="Tim:Dina:David:Maya"; @splitlist=split/:/, $splitfunc, 3; print "@splitlist"; Результат: Tim Dina Davi:Maya Удаление последнего элемента строки Функции chop и chomp. Функции языка Perl chop и chomp предназначены для удаления последних символов строк. Наиболее часто эти функции употребляется при работе со строками, которые были считанный из файла или которые предназначены для записи в файлы. Весьма полезная функция chop используется для того, чтобы удалить последний символ строки. Например: $var="Hello world"; chop($var); Результат приведенного примера будет: Hello Worl Обратите внимание в качестве возвращаемой значений этой функции является отброшенный символ(приведенной выше примере Hello World это буква "d". Если же применить функцию chop к списку, то она удалит последний символ каждой из входящей в список строк, однако возвратит значение символа, удаленного только лишь из последней строки. Функция chomp во многом похожа на функцию chop однако она удаляет только символы новой строки. Например: $var="Hello World\n"; chomp($var); # Удаление символа новой строки; Однако существует еще одна, более удобная форма использования chomp каждый раз при введении новой переменной в Perl можно использовать оператор присваивания. Perl сначала выполняет присваивание, а затем использует переменную так, как вы потребуете. chomp($var=<STDIN>); #Прочитает текст без символа новой строки $var<STDIN>; chomp ($var); | |
Просмотров: 916
| Теги: |
Всего комментариев: 0 | |