Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
PROGRAM OUTPUT:
This Perl not built to support threads
Compilation failed in require at threadring.perl-3.perl line 26.
BEGIN failed--compilation aborted at threadring.perl-3.perl line 26.
#!/usr/bin/env perl
use strict;
use warnings;
my $sub = sub {
my $x = shift;
$x++;
return $x;
};
bless $sub, 'HarlemShakeSub';
my $sub2 = sub {
my $x = shift;
$x = $x * 3;
return $x;
};
bless $sub2, 'HarlemShakeSub';
my $sub3 = $sub + $sub2;
print $sub3->(2), "\n";
# 9
package HarlemShakeSub;
use strict;
use warnings;
use overload
'+' => \&harlem_plus
;
sub harlem_plus {
my ($self, $other, $swap) = @_;
return sub {
my $temp = $self->(@_);
$temp = $other->($temp);
}
}
PSGI and Plack are inspired by Python's WSGI and Ruby's Rack
> mount "/reverse" => builder { $reverse_app };
> mount "/" => builder { $app; };
Для разных путей (/, /reverse и т.п.) назначаются заранее приготовленные процедуры.
Для некоторых простых задач это может быть удобно.
А если у меня урлы на сайте формируются динамически так, что на этапе написания программы мне все эти урлы будут неизвестны, то такой подход (назначение определённым урлам заранее приготовленных процедур) кажется уже не таким уж удобным способом.
Введение в разработку web-приложений на PSGI/Plack