Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
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