Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Конструкции языка Рerl
Простые и составные операторы Простым выражением называется любая допустимая комбинация операторов и операндов. В языке Perl оператором является выражение, заканчивающееся точкой с запятой. Все операторы оканчиваются точкой с запятой. Когда вы вводите текст программы в отладчик, можно опускать точку с запятой, поскольку отладчик поставит ее за вас. Следующий текст иллюстрирует простой оператор присваивания на языке Perl: Скрипты Perl могут содержать блоки операторов, или составные операторы, которые помещаются в фигурные скобки ({}), как показано ниже: { # Операторы # Другой блок операторов }Ваши скрипты будут широко использовать блоки инструкций наряду с более сложными операторами. Скрипты на языке Perl могут использовать блоки инструкций для определения области видимости (scope) локальных переменных. Однако определение локальных переменных в блоке не является автоматическим. Для их декларации скрипт должен использовать ключевое слово local. Далее в этой главе мы рассмотрим область видимости переменных в деталях. Условные операторы Многие предыдущие примеры использовали оператор if. В языке Perl оператор if почти, что идентичен оператору if в других языках программирования. В языке Perl инструкции обязательно должны быть заключены в фигурные скобки, образуя блок. if (expr) statement; // приемлемо для C но не для Perl if (expr) { statement; # вот так нужно делать в Perl }Ниже показано, что Perl позволяет использовать конструкцию elsif: if (expr1) { statament1; } elsif (expr2) { statement2; } else { ststement3; }Оператор unless Наряду с использованием логического отрицания, скрипты Perl часто содержат оператор unless unless (expr) { statement; }Оператор do Одним из частных случаев блочных операторов служит оператор do, который позволяет блоку инструкций возвращать значения. Значением, которое оператор do возвращает, является значение последнего выражения, оцененного в рамках блока. Например, следующий оператор do сравнивает строковую переменную $Month с месяцами года и присваивает переменной $DayCount значение, равное числу дней в месяце: Обратите внимание, что Perl требует наличия точки с запятой в конце блока do. Не путайте блок do с оператором do while, который будет рассматриваться ниже в этой главе. Циклы и ветвления Perl поддерживает операторы циклов for, while и do. Существенным отличием служит то, что Perl требует использования инструкций блоками, заключенными в фигурные скобки. Perl расширяет конструкцию цикла, что6ы обеспечить ее некоторые новые формы. for($i = 0; $i< 100;$i++) { printf("%d\n", $i); } while ($i > 0) { printf("%d\n", $i-); } do { printf("%d\n", $i++); } while ($i < 0);Для понимания конструкций циклов на языке Perl, необходимо разобраться с использованием блока continue. Рассмотрим следующий цикл while, который содержит блок continue: $i = 100; while ($i > 0) { print $i; } continue {$i-}Вы можете представлять себе блок continue как третье выражение в цикле for, которое выполняется на каждой итерации. Аналогичным образом Perl выполняет блок continue в конце каждой итерации. Однако, как вы узнаете далее, блок continue обеспечивает скрипту более полный контроль над процессом, чем обеспечивает цикл for. Когда цикл на языке Perl использует оператор next, блок continue все равно выполняется, если только он существует. Однако если цикл использует оператор redo, блок continue не исполняется. Метки В скрипте Perl метки просто означают имя, соответствующее некоему положению внутри скрипта. Имена меток оканчиваются двоеточием (например, outerloop:). Используя оператор goto, скрипт может осуществлять переходы на метку. Дополнительно могут использоваться операторы last, next и redo, для перехода к метке. Следующий код иллюстрирует использование оператора last для перехода на метку: outerloop: while ($i > 0) { while ($j > 0) { #Здесь какой-нибудь другой процесс if ($needToAboutLoop) { last outerloop; } } }В этом случае инструкция содержит ветвь last для перехода наметку outerloop и окончания выполнения цикла. Цикл until Еще одной конструкцией цикла в языке Perl является цикл until, который является противоположностью циклу while. Как вы помните, в цикле while инструкции выполняются до тех пор, пока выполняется заданное условие. В цикле until, напротив, инструкции выполняются до тех пор, пока не будет выполнено условие. Например, рассмотрим цикл while, такой, как показан на следующей странице. Используя цикл until, можно создать идентичный цикл, показанный ниже: until (expr) { statement; }Аналогичным образом следующая конструкция do while использует оператор логического отрицания для того, чтобы выполнять цикл, пока заданное булево выражение не станет истинным: do { statement; } while (!(expr));Используя конструкцию do until, вы можете сформировать идентичный цикл без использования логического отрицания: do { statement; } until (expr);Циклы for и foreach Perl поддерживает цикл for: for (statement1; expression; statement2) { statement3; }Например, следующий код использует цикл for для того, чтобы вывести значения чисел от 0 до 100: for ($digit = 0; $digit <=100; $digit++) { print $digit, ' '; }Дополнительно Perl содержит конструкцию цикла foreach, который позволяет скрипту организовывать итерации в списках и массивах. Рассмотрим пример: @list = ('a','b','c'); foreach $arg (@list) { print "List item: $arg\n"; } foreach $i (1..10) { print "iteration $i\n" }В первом случае цикл foreach осуществлял перебор значений в списочной переменной @list. Во втором примере в цикле foreach существляется перебор чисел в диапазоне от 1 до 10. Внутри цикла foreach может фигурировать список, состоящий из литералов, или массив, как было проиллюстрировано в предыдущем примере. После выполнения одной итерации циклом, специальная скалярная переменная {$arg в первом случае и $i во втором случае)принимает значение из заданного списка элементов. Область видимости этой скалярной переменной в цикле foreach ограничивается телом цикла. Поэтому скалярная переменная цикла, foreach не будет конфликтовать с идентичным именем переменной, определенной вне цикла. В следующем коде переменная с именем $i используется внутри и вне цикла foreach: $i = 1001; foreach $i (1..9) { print "$i\n"; # цикл выведет 123456789 } print "$i\n";Как можно увидеть из этого примера, переменная $i, используемая для организации итераций цикла, не конфликтует с переменной $i, определенной вне цикла. Особенностью цикла, foreach, которую ваши скрипты могут использовать, является возможность модификации элементов массива.(Будьте осторожны при реализации этой возможности!) Рассмотрим следующий цикл foreach, который добавляет значение 10 каждому элементу массива: @list = 1..5; foreach $i (@list) { $i += 10; } $, = ' '; print @list; # выведет 11 12 13 14 15В языке Perl имена foreach и for рассматриваются как синонимы. Поэтому в скриптах можно использовать эти имена попеременно. Perl, в свою очередь, будет определять тип цикла, основываясь на его контексте. Date: 2016-07-25; view: 332; Нарушение авторских прав |