use Socket; use IO::Interface ':functions'; socket(Sock,AF_INET,SOCK_DGRAM,scalar getprotobyname('udp')); @interfaces =* if_list (Y*SOCK);
В этом случае может применяться ссылка на шаблон типа, как показано выше, или шаблон имени файла. При помощи данной конструкции будет намного проще, найти в сети, например, мебель для гостиной цены в Москве здесь .
Анализ работы модуля IO::lnterface
Прежде чем приступить к изучению модуля IO::Interface, опишем основные нюансы, связанные с его использованием. Функциональные коды ioctl () в значительной степени зависят от операционной системы и в системных файлах заголовков net/if.h, sys/socket.h и sys/sockio.h определены по-разному. Перед тем как использовать модуль IO::Interface, необходимо преобразовать эти системные файлы, заголовки и файлы .ph языка Perl с помощью инструментального средства h2ph, описанного ранее (в разделе “Реализация функции sockatmark () ”). Однако, как уже было сказано, сценарий h2ph далек от идеала, и сгенерированные им файлы обычно требуют исправления вручную, прежде чем их удастся правильно оттранслировать и загрузить.
В качестве альтернативы настоятельно рекомендуется применять расширение на языке С с тем же именем, разработанное в ходе исследований, результаты которых легли в основу настоящего раздела. При условии, что в вашей операционной системе есть транслятор С или C++, вы можете загрузить этот модуль из архива CPAN и установить его без каких-либо затруднений. Это расширение С не только предоставляет все функциональные средства реализации, написанные на языке Perl, но и дает возможность изменять установки интерфейса. Например, этот модуль позволяет изменить IP-адрес, присвоенный плате Ethernet. Данный модуль можно найти в архиве CPAN .
Тем не менее, очень полезно рассмотреть версию модуля IO::Interface, написанную на языке Perl, чтобы получить представление о том, как должен быть написан интерфейс к этой части операционной системы довольно низкого уровня. Проведем анализ программы.
Строки 1-21. Установка модуля. Эта часть модуля представляет собой рутинные операции Perl. Загружается модуль Exporter, объявляются экспортируемые переменные и создаются теги экспорта модуля.