Perl Технология программирования   Компьютерная графика Экономическая информатика   3GL   к 4GL

Введение в язык программирования Perl

Модули (packages)

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

Конец модуля это конец блока или файла. Головной модуль имеет по умолчанию имя main. На имя внутри модуля можно ссылаться, добавляя '::' после имени модуля.

Например:

	$main::var1	- переменная в головном модуле.

	::var1		- то же самое. Имя main можно опускать.

	$модуль1::var1	- переменная в модуле 'модуль1'

	$модуль1::модуль2::var1 - Модуль2 содержится в модуле 1.

Только идентификаторы, начинающиеся с буквы или символа '_', хранятся в пространстве имен текущего модуля. Остальные хранятся в пространстве головного модуля main. Кроме этого имена STDIN, STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC и SIG так же хранятся в головном модуле.

Таблицы имен.

Все имена модуля хранятся в ассоциативном массиве (хеше) с именем модуля, к которому добавлены символы "::". Таким образом имена головного модуля хранятся в %main:: , модуля 'mod1' в %mod1:: и т.д. Выражение вида *имя указывает значение элемента хеша 'имя', это удобно для определения констант.

Например:

	*pi = \3.14159;

Здесь переменная $pi - это константа пи, которую уже нельзя изменить.

Конструкторы и деструкторы.

Конструктор - это подпрограмма, которая выполняется в момент создания объекта, а деструктор - удаления объекта. Для модуля это подпрограммы с именами BEGIN и END. При определении этих подпрограмм слово sub можно опускать.

Конструктор BEGIN выполняется сразу как только возможно, т.е. как только он определен, даже не завершая дальнейший разбор программы. Можно указать несколько блоков BEGIN. Они будут выполняться один за другим в порядке определения.

Деструктор END выполняется последним как только возможно, т.е. при завершении работы интерпретатора. Можно указать несколько блоков END, при этом они будут выполняться в обратном определению порядке.

Классы.

В Perl нет специального синтаксиса для классов. Но функционально полноценными классами могут быть модули. При этом подпрограммы модуля становятся методами, а с помощью массива @ISA можно реализовать механизм наследования в классах. Более подробно классы описаны отдельно.

Создание библиотеки.

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

	package имя_модуля;	# Такое же как и имя этого файла без расширения '.pm'
	require Exporter;	# Обязательная строка для экспорта имен
	@ISA = qw(Exporter);	# -//-
	@EXPORT = qw(func1 func2) # Перечисляем имена функций. Внимание ! нет запятой!
	@EXPORT_OK = qw( $переменная @массив ); # Указать публичные переменные, массивы и т.д. если необходимо
	{  # Начало блока модуля
	..... 
	sub func1
	........
	sub func2
	........
	1;
	}

Данный файл с расширением ".pm" должен храниться в одной из библиотечных директорий Perl. Они перечислены в массиве @INC, одна из них обычно "/usr/local/lib/perl/".

В головной программе вы указываете:

и вам становятся доступны имена подпрограмм данного модуля.

Perl библиотеки.

Стандартный набор библиотек обычно поставляется с дистрибутивом Perl, они разделяются на pragma библиотеки (работают как директивы компилятору) и стандартные библиотеки.

Pragma библиотеки.

Данные библиотеки используют как:

когда хотят включить действие и

когда выключить.

В стандартный набор входят следующие pragma:

diagnostics
Включить режим расширенной диагностики.

integer
Использовать целочисленную арифметику.

less
Режим минимальной загрузки компилятора.

overload
Режим переопределения операторов.

sigtrap
Режим слежения за прерываниями.

strict
Режим ограниченного использования "опасных" операторов.

subs
Режим обязательного декларирования подпрограмм.

Стандартные библиотеки.

AnyDBM_File
Возможность работы с разными типами баз данных.

AutoLoader
Загрузка в память функций только во время вызова.

AutoSplit
Разделить модуль для автозагрузки.

Benchmark
Анализ скорости исполнения программы.

Carp
Предупреждения об ошибках.

Config
Доступ к конфигурации Perl.

Cwd
Получить имя текущей рабочей директории.

DB_File
Работа с базой данных формата Berkley DB.

Devel::SelfStubber
Режим отладки автозагрузки.

DynaLoader
Динамическая загрузка библиотек C.

English
Использовать длинные имена встроенных переменных.

Env
Импортировать имена переменных окружения

Exporter
Обеспечивает экспорт/импорт для модулей.

ExtUtils::LibList
Определяет используемые библиотеки.

ExtUtils::MakeMaker
Создает файл проекта Makefile

ExtUtils::Manifest
Программы для создания и проверки файла MANIFEST

ExtUtils::Mkbootstrap
Применение файла начальной загрузки для DynaLoader.

Fcntl
Определения как и в С Fcntl.h

File::Basename
Синтаксический разбор спецификации файла.

File::CheckTree
Быстрый проход по директориям диска.

File::Find
Быстрый поиск файлов по директориям.

FileHandle
Обеспечивает объектный метод доступа к указателям файлов.

File::Path
Создание/удаление директорий.

Getopt::Long
Расширенная обработка опций.

Getopt::Std
Стандартная обработка опций.

I18N::Collate
Сравнение символов локальной кодировки.

IPC::Open2
Межпроцессорный обмен по чтению и записи.

IPC::Open3
Межпроцессорный обмен по чтению, записи, и обработки ошибок.

Net::Ping
Тест доступа к хосту.

POSIX
Стандартный интерфейс по IEEE Std 1003.1

SelfLoader
Загрузка функций только по вызову.

Socket
Определение структур и констант как и в С socket.h

Test::Harness
Стандартный тест с статистикой.

Text::Abbrev
Создание таблицы сокращений по списку.

Подробное описание каждой библиотеки записано в самом файле.

CPAN

Программисты всего мира, работающие с Perl, создали общедоступную библиотеку модулей CPAN. Она доступна через Интернет и содержит огромное количество различных по назначению модулей. К ним относятся документаторы, системные интерфейсы, интерфейсы работы с базами данных, работа в сети, с файлами, Интернет-броузеры, системы поиска, огромное количество CGI скриптов для Web серверов и многое-многое другое. Список некоторых CPAN серверов вы можете найти в приложении.

[Назад] [Содержание] [Вперед]

Perl Технология программирования   Компьютерная графика Экономическая информатика   3GL   к 4GL

Знаете ли Вы, в чем ложность понятия "физический вакуум"?

Физический вакуум - понятие релятивистской квантовой физики, под ним там понимают низшее (основное) энергетическое состояние квантованного поля, обладающее нулевыми импульсом, моментом импульса и другими квантовыми числами. Физическим вакуумом релятивистские теоретики называют полностью лишённое вещества пространство, заполненное неизмеряемым, а значит, лишь воображаемым полем. Такое состояние по мнению релятивистов не является абсолютной пустотой, но пространством, заполненным некими фантомными (виртуальными) частицами. Релятивистская квантовая теория поля утверждает, что, в согласии с принципом неопределённости Гейзенберга, в физическом вакууме постоянно рождаются и исчезают виртуальные, то есть кажущиеся (кому кажущиеся?), частицы: происходят так называемые нулевые колебания полей. Виртуальные частицы физического вакуума, а следовательно, он сам, по определению не имеют системы отсчета, так как в противном случае нарушался бы принцип относительности Эйнштейна, на котором основывается теория относительности (то есть стала бы возможной абсолютная система измерения с отсчетом от частиц физического вакуума, что в свою очередь однозначно опровергло бы принцип относительности, на котором постороена СТО). Таким образом, физический вакуум и его частицы не есть элементы физического мира, но лишь элементы теории относительности, которые существуют не в реальном мире, но лишь в релятивистских формулах, нарушая при этом принцип причинности (возникают и исчезают беспричинно), принцип объективности (виртуальные частицы можно считать в зависимсоти от желания теоретика либо существующими, либо не существующими), принцип фактической измеримости (не наблюдаемы, не имеют своей ИСО).

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

Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.

Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.

Однако такая постановка является внутренне противоречивой (виртуальные частицы ненаблюдаемы и их по произволу можно считать в одном случае отсутствующими, а в другом - присутствующими) и противоречащей релятивизму (то есть отрицанию эфира, так как при наличии таких частиц в вакууме релятивизм уже просто невозможен). Подробнее читайте в FAQ по эфирной физике.

{DATA}
НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution