
Новая версия Perl плагина для продуктов JetBrains стала доступна для скачивания из официального репозитория. Главные фичи: оптимизация и поддержка HTML::Mason.
А теперь, немного подробнее:
Высокоуровневый интерпретируемый динамический язык
Switch
, Class::Accessor
и Mason2
.# следующий код вызывается, когда к функции
# добавляется 'is cached'
multi sub trait_mod:<is>(Routine $r, :$cached!) {
my %cache;
# обернём функцию в блок, который
$r.wrap(-> $arg {
# ищет аргумент в кеше
%cache{$arg}:exists
?? %cache{$arg}
# ... и вызывает оригинал, если он не найден
!! (%cache{$arg} = callwith($arg))
}
);
}
# пример применения:
sub fib($x) is cached {
say("fib($x)");
$x <= 1 ?? 1 !! fib($x - 1) + fib($x - 2);
}
# для всех значений от 0 до 10 происходит лишь по одному вызову
say fib(10);
my $buf = Buf.new(0x6d, 0xc3, 0xb8, 0xc3, 0xbe, 0x0a);
$*OUT.write($buf);
my $str = $buf.decode('UTF-8');
print $str;
WeBWorK — это написанная на Perl свободная система для предоставления индивидуальных домашних заданий через сеть. Система позволяет преподавателям создавать курсы из набора домашних работ, которые могут быть впоследствии решены студентами.
Студент может получит доступ к домашнему заданию с любого компьютера. Система предполагает ввод формул в любом тождественном виде, что снимает лишние заботы со студента. Благодаря тому, что информация о корректности решения поступает немедленно, у студента есть возможность перерешать задание.
Преподаватель также не ограничен в месте доступа. Для составления курса могут быть использованы как новые задачи, так и тысячи уже готовых задач нескольких университетов. Для пресечения списывания предусмотрена возможность задать индивидуальные особенности задания для каждого студента. Вся информация о студентах, курсах и статистика решения задач доступна преподавателю, что позволяет лучше оценить успеваемость студентов, как общую, так и индивидуальную.
# сортировка по умолчанию с учётом типа
my @sorted = @unsorted.sort; # или sort @unsorted;
# численное сравнение
my @sorted = @unsorted.sort: { $^a <=> $^b };
# то же, с использованием функциональной семантики
my @sorted = sort { $^a <=> $^b }, @unsorted;
# строковое сравнение ( как cmp в Perl 5 )
my @sorted = @unsorted.sort: { $^a leg $^b };
# сравнение с учётом типа
my @sorted = @unsorted.sort: { $^a cmp $^b };
my @topten = @scores.sort( { $^b <=> $^a } ).list.munch(10);