Локальность переменной цикла

В предыдущих примерах переменная цикла не предварялась ни одним из возможных модификаторов (например, my или temp). Это наводит на мысль о том, какая переменная используется — глобальная? локальная? может быть создается переменная, которая продолжает существовать после завершения цикла? Читать далее «Локальность переменной цикла»

Perl6 в составе дистрибутива Parrot

Почти все необходимое для работы Perl 6 содержится в подкаталогах parrot/languages/perl6 и parrot/languages/imcc. Разумеется, parrot тоже должен быть доступен. Кроме того, на машине обязательно должен быть установлен Perl 5. Для сборки дистрибутива потребуется компилятор C++ (конечно, для бинарного дистрибутива Parrot on Win32 его наличие не обязательно). Читать далее «Perl6 в составе дистрибутива Parrot»

Анализ примеров Perl 5. Конкатенация

В Perl 5 «сложение» строк было возложено на оператор (точка). В то же время большие числа можно было записывать, разделяя их на части, соединенные символом подчеркивания (например, my $i 123_456;).
В Perl 6 действие символа подчеркивания для конкатенации распространяется и на строки. Читать далее «Анализ примеров Perl 5. Конкатенация»

Ожидание устройства или файла

Здесь и далее для краткости я буду приводить фрагменты программ, в которых не выполняются проверки на ошибки. Часто для того, чтобы начать работу с устройством или файлом, надо дождаться пока это устройство или файл будут инициализированы. Читать далее «Ожидание устройства или файла»

Запуск от имени другого пользователя

В принципе, в этом нет ничего сложного или нового. Просто получаем идентификатор пользователя и его группы с помощью стандартных для UNIX вызовов getpwnam(), setuid(), setgid() и initgroups(). Последний вызов в этом примере не используется. Для выполнения этого примера нужны права администратора. Читать далее «Запуск от имени другого пользователя»

Rwlocks

С помощью блокирующего механизма, rwlocks, сделать это несложно. В отличие от мутексов, rwlock может иметь два состояния блокировки: чтение и запись. Читать далее «Rwlocks»

Запуск на удаленном узле QNX сети

Запуск на удаленном узле — это одна из ключевых возможностей утилиты on. Для этого используется тот же вызов spawn(), что и в предыдущих примерах. В структуре inheritance предусмотрено специальное поле для дескриптора удаленного узла — nd. Читать далее «Запуск на удаленном узле QNX сети»

Беседа с незнакомцем

В данном примере мы рассмотрим, как процесс-клиент A может использовать какой-либо канал связи (локальный канал (pipe), сокет, совместно используемую память, собственный IPC, почтового голубя) с другим процессом-клиентом B для передачи ему пакета данных, содержащего достаточно информации для того, чтобы B смог обратится к процессу-серверу для дублирования файлового дескриптора в своем адресном пространстве. Читать далее «Беседа с незнакомцем»

Пример perl6-клиента веб-сервиса

Веб-сервисы (или XML-веб-сервисы) — это службы, позволяющие автоматически обмениваться данными с удаленными серверами. Соответственно, взаимодействуют две стороны — клиент и сервер. Одно из многочисленных удобств веб-сервисов в том, что как серверное, так и клиентское ПО могут быть написаны на любых языках, лишь бы соблюдался установленный протокол (обычно это SOAP). Читать далее «Пример perl6-клиента веб-сервиса»