Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Использование пакетов для изоляции подпрограмм
Если у вас имеется много подпрограмм, особенно подпрограмм, которые вы храните в различных файлах, то может возникнуть коллизия имен переменных, когда одно и то же имя переменной используется в различных целях. Perl помогает избежать этого с помощью пакетов (packages). Как известно, объявляя локальные переменные для подпрограмм, можно избежать коллизии имен. Однако если несколько подпрограмм совместно используют какие-то специфические данные, то эти данные могут потребовать глобальной области видимости, что как раз и может вести к коллизии имен. Используя пакеты, можно группировать глобальные данные в частные пространства имен (name-spaces), вне пределов которых глобальные переменные не видны, т. е. неизвестны. Рассмотрим приведенный ниже простой пример, в котором две подпрограммы (находящиеся в различных файлах) используют частные, индивидуальные пространства имен. # Код в файле one.pl sub sub_one { package demo_one; $some_data = 10; } # * * * * * * * * # Код в файле two.pl sub sub_one { package demo_two; $some_data = 20; }Как можно видеть, первая подпрограмма использует имя пакета demo_one, вторая подпрограмма использует имя пакета demo_two. Обе подпрограммы могут устанавливать и использовать переменную $some_data без возникновения коллизии имен между одной и другой глобальными переменными. Скрипт <знает> имя пакета, в пределах которого находится переменная, и он организует доступ к ней, использует имя пакета в качестве префикса к имени переменной. В следующем примере имя пакета package_one или package_two добавляется в качестве префикса к имени переменной some_data: &sub_one; &sub_two; print "Переменная 1 $package_one'some_data\n" print "Переменная 2 $package_two'some_data\n"Когда вы используете пакеты языка Perl, можете создать уникальное пространство имен в пределах текущего файла исходных кодов путем помещения инструкции package в начале файла, как показано ниже: package some_package_name $some_data = 1; sub some_sub { return $some_data; }В данном случае переменная $some_data существует только в пакете и поэтому защищена от некорректного доступа. Использование пакета, таким образом, обеспечивает данным ту же область видимости, где глобальные переменные имеют своей областью видимости тот файл исходных кодов, в котором они объявлены. При вызове подпрограммы из другого файла скриптов необходимо использовать имя пакета: Если выражение включает строковые операнды, то Perl конвертирует строковые значения в числовые перед тем, как оценить выражение. В настоящее время Perl поддерживает следующие арифметические операторы:? + сложение? - вычитание или изменение знака? * умножение? / деление (только для чисел с плавающей запятой)? % взятие по модулю (только для целочисленных значений) Рассмотрим примеры следующих арифметических операций языка Perl: $x = 2.5; $y = 3; print ($x + 2*$y); # выведет 8.5 print (7 / $y); # выведет 2.3333333 print int (7 / $y); # выведет 2 print (7 % $y); # выведет 1 print (7.5 % $y); # выведет 1Perl также поддерживает операторы инкремента и декремента:? ++ декремент в префиксной или постфиксной форме? - инкремент в префиксной или постфиксной форме Рассмотрим примеры операций инкремента и декремента: $x = 4; ++$x; print $x; # выведет 5 $y = $x-; # уменьшит x после присвоения y значения x print "$y $x" # выведет 5 4Наконец, Perl обеспечивает арифметический оператор для возведения в степень (**). Рассмотрим следующие примеры использования операции возведения в степень: $x = 2 ** 3; # результат 8 $x = 2 ** 0.5; # квадратный корень из 2 $x = -2 ** -3; # 1/(-2 в кубе), результат -1/8 (-0.125)Date: 2016-07-25; view: 324; Нарушение авторских прав |