В предыдущих примерах переменная цикла не предварялась ни одним из возможных модификаторов (например, 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-клиента веб-сервиса»