WHOIS сервер слушает 43 порт для запросов от клиентов.
Ответ от сервера приходит в понятном для человека виде.
Сервер после посылки ответа, сразу же закрывает соединение.
Отсутствуют средства для определения кодировки.
Отсутствуют механизмы защиты.
package Singleton; use strict; use warnings; use feature 'state'; my $singleton = { rand => int(rand(100)) }; sub instance { ref $singleton eq __PACKAGE__ ? $singleton : bless $singleton, shift; } sub instance_with_state { state $singleton = { rand => int(rand(100)) }; ref $singleton eq __PACKAGE__ ? $singleton : bless $singleton, shift; } 1;
.text # Здесь начинается текст программы. .globl _start # Указываем, где расположена точка входа. .type factorial, @function # Помечаем factorial как функцию. factorial: # (S2), (S7) nop # Нулевая операция, удобно для отладки. pushl %ebp # Сохраняем %ebp в стек. (S3), (S8) movl %esp, %ebp # Теперь %ebp указывает на вершину стека. movl 8(%ebp), %eax # Помещаем в %eax 1-й аргумент функции. cmpl $1, %eax # Если он равен 1 (базовый случай), je end_factorial # то переходим к выходу из функции. decl %eax # Уменьшаем на единицу аргумент функции и pushl %eax # помещаем его в стэк. (S6) call factorial # Вызываем саму себя из функции. movl 8(%ebp), %ebx # Помещаем 1-й аргумент функции в %ebx. imull %ebx, %eax # В %eax помещаем результат %eax * %ebx. end_factorial: movl %ebp, %esp # Делаем %ebp вершиной стека. (S12) popl %ebp # Помещаем из стека в %ebp. (S10), (S13) ret # Выходим из функции. (S11), (S14) _start: pushl $2 # Помещаем аргумент функции factorial # в стек. (S1) call factorial # Вызываем функцию factorial. addl $4, %esp # Очищаем стек от аргумента функции. (S15) movl %eax, %ebx # Результат функции используем как код # выхода из программы. movl $1, %eax # Заказываем системный вызов exit int $0x80 # и вызываем его.Собираем и запускаем программу:
#!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all); use FileHandle; cmpthese(100000, { fh_1 => sub { open my $fh1, "<", "a.txt" or die $!; my @whole_file = <$fh1>; }, fh_2 => sub { open my $fh2, "<", "a.txt" or die $!; my @whole_file = $fh2->getlines; }, fh_3 => sub { my $fh3 = FileHandle->new; $fh3->open("< a.txt") or die $!; my @whole_file = $fh3->getlines; } }); __END__ Rate fh_3 fh_2 fh_1 fh_3 29155/s -- -36% -43% fh_2 45872/s 57% -- -11% fh_1 51282/s 76% 12% --