Perl в повседневной практике Олег Алистратов
Проекты <ul><li>LiveJournal, BBC, booking.com, New York magazines, IMDB, Ticketmaster, Vox, My Opera Community </li></ul><...
Синтаксис perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/&quot; -;;s;;$_;see'
Синтаксис package  Point; use  Moose; has  'x'  => (is =>  'rw' , isa =>  'Int' ); has  'y'  => (is =>  'rw' , isa =>  'In...
Однострочники # Change all the isolated oldvar occurrences to newvar perl -i.old -pe 's{boldvarb}{newvar}g' *.pl # Find pa...
CPAN <ul><li>www. cpan.org </li></ul><ul><li>18   333   модуля (на 9 сентября) </li></ul><ul><li>>  20  млн  строк кода </...
Net::XMPP use  Net::XMPP; my  $xmpp = new Net::XMPP::Client(); $xmpp->SetCallBacks( message  => &InMessage); $xmpp->Execut...
Net::Oscar use  Net::OSCAR  qw(:standard) ; sub  im_in {  my  ($oscar, $sender, $message, $is_away) = @_; print   &quot;[A...
AI::NeuralNet::BackProp # Create a new network with 1 layer, 5 inputs,  # and 5 outputs. my  $net = new AI::NeuralNet::Bac...
Mojolicious use  Mojolicious::Lite; # Route with placeholder get  '/:foo'  =>  sub  { my  $self =  shift ; my  $foo  = $se...
Динамические возможности <ul><li>Динамическая типизация </li></ul><ul><li>Замыкания </li></ul><ul><li>Операции с символьно...
Мультипарадигменность <ul><li>Процедурное программирование </li></ul><ul><li>Функциональное (Higher-Order Perl) </li></ul>...
Производительность <ul><li>Встраивание C/C++ кода </li></ul><ul><li>XS </li></ul><ul><li>Inline </li></ul><ul><li>Подключе...
Преимущества <ul><li>Скорость разработки </li></ul><ul><li>Лаконичность кода </li></ul><ul><li>Кросс-платформенность из ко...
Недостатки <ul><li>Высокий порог вхождения </li></ul><ul><li>Исторический мусор (в том числе на CPAN, в том числе в книгах...
Технологии на экспорт <ul><li>P erl  C ompatible  R egular  E xpressions </li></ul><ul><li>http://pcre.org/ </li></ul><ul>...
Сообщества <ul><li>perlmonks.org </li></ul><ul><li>planet.perl.org </li></ul><ul><li>perlsphere.net </li></ul><ul><li>plan...
Сообщества <ul><li>www.pm.org </li></ul><ul><li>moscow.pm.org </li></ul><ul><li>kiev.pm.org </li></ul>
Спасибо ! Олег Алистратов [email_address]
Upcoming SlideShare
Loading in …5
×

Perl in practice

1,509 views
1,429 views

Published on

Published in: Technology
1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,509
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
5
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide

Perl in practice

  1. 1. Perl в повседневной практике Олег Алистратов
  2. 2. Проекты <ul><li>LiveJournal, BBC, booking.com, New York magazines, IMDB, Ticketmaster, Vox, My Opera Community </li></ul><ul><li>Yandex, Rambler, mail.ru, uaportal.com, banner.kiev.ua, ukr.net, infostore.org, ex.ua </li></ul><ul><li>Bugzilla, Request Tracker, Crucible, OTRS, WebGUI, Catalyst, Frozen Bubble, TWiki, SpamAssassin, SqueezeCenter, Webmin, YABB, git, Padre </li></ul>
  3. 3. Синтаксис perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/&quot; -;;s;;$_;see'
  4. 4. Синтаксис package Point; use Moose; has 'x' => (is => 'rw' , isa => 'Int' ); has 'y' => (is => 'rw' , isa => 'Int' ); sub clear { my $self = shift ; $self->x(0); $self->y(0); }
  5. 5. Однострочники # Change all the isolated oldvar occurrences to newvar perl -i.old -pe 's{boldvarb}{newvar}g' *.pl # Find palindromes perl -lne 'print if $_ eq reverse' /usr/dict/words # Command-line that reverse all the bytes in a file perl -e 'print scalar reverse <>' f1 f2 f3 ... # Remove all blank lines. perl -ne 'print unless /^$/' # Print prime numbers perl -wle '(1 x $_) !~ /^(11+?)1+$/ && print while ++$_'
  6. 6. CPAN <ul><li>www. cpan.org </li></ul><ul><li>18 333 модуля (на 9 сентября) </li></ul><ul><li>> 20 млн строк кода </li></ul><ul><li>Пакеты .deb, .rpm, порты FreeBSD </li></ul><ul><li>$ cpan install Data::Password::Entropy </li></ul>
  7. 7. Net::XMPP use Net::XMPP; my $xmpp = new Net::XMPP::Client(); $xmpp->SetCallBacks( message => &InMessage); $xmpp->Execute( hostname => 'talk.google.com' , port => 5222, username => 'user@gmail.com' , password => 'passw' , resource => 'Messenger' , ); $xmpp->Disconnect();
  8. 8. Net::Oscar use Net::OSCAR qw(:standard) ; sub im_in { my ($oscar, $sender, $message, $is_away) = @_; print &quot;[AWAY] &quot; if $is_away; print &quot;$sender: $messagen&quot; ; } $oscar = Net::OSCAR->new(); $oscar->set_callback_im_in(&im_in); $oscar->signon($screenname, $password); while (1) { $oscar->do_one_loop(); }
  9. 9. AI::NeuralNet::BackProp # Create a new network with 1 layer, 5 inputs, # and 5 outputs. my $net = new AI::NeuralNet::BackProp(1, 5, 5); # Add a small amount of randomness to the network $net->random(0.001); # Demonstrate a simple learn() call my @inputs = ( 0, 0, 1, 1, 1, ); my @ouputs = ( 1, 0, 1, 0, 1, ); print $net->learn(@inputs, @outputs), &quot;n&quot; ;
  10. 10. Mojolicious use Mojolicious::Lite; # Route with placeholder get '/:foo' => sub { my $self = shift ; my $foo = $self->param( 'foo' ); $self->render(text => &quot;Hello from $foo!&quot; ); }; app->start;
  11. 11. Динамические возможности <ul><li>Динамическая типизация </li></ul><ul><li>Замыкания </li></ul><ul><li>Операции с символьной таблицей </li></ul><ul><li>Компиляция «на лету», изменение оп-кода </li></ul><ul><li>Создание собственных синтаксических конструкций </li></ul><ul><li>Создание модулей, классов, функций, переменных run-time </li></ul>
  12. 12. Мультипарадигменность <ul><li>Процедурное программирование </li></ul><ul><li>Функциональное (Higher-Order Perl) </li></ul><ul><li>ООП («настраиваемое») </li></ul><ul><li>TIMTOWTDI </li></ul>
  13. 13. Производительность <ul><li>Встраивание C/C++ кода </li></ul><ul><li>XS </li></ul><ul><li>Inline </li></ul><ul><li>Подключение внешних библиотек </li></ul><ul><li>DynaLoader </li></ul>
  14. 14. Преимущества <ul><li>Скорость разработки </li></ul><ul><li>Лаконичность кода </li></ul><ul><li>Кросс-платформенность из коробки </li></ul><ul><li>Разнообразие задач (демоны, web, one-liners, GUI, скрпты для Cron, crawlers) </li></ul><ul><li>Поддержка Unicode </li></ul>
  15. 15. Недостатки <ul><li>Высокий порог вхождения </li></ul><ul><li>Исторический мусор (в том числе на CPAN, в том числе в книгах) </li></ul><ul><li>Ужасные threads </li></ul><ul><li>Поддержка кода требует дисциплины </li></ul>
  16. 16. Технологии на экспорт <ul><li>P erl C ompatible R egular E xpressions </li></ul><ul><li>http://pcre.org/ </li></ul><ul><li>P erl D ata L anguage </li></ul><ul><li>http://pdl.perl.org/ </li></ul><ul><li>T est A nything P rotocol </li></ul><ul><li>http://testanything.org </li></ul><ul><li>P lain O ld D ocumentation </li></ul><ul><li>http://search.cpan.org/perldoc?perlpod </li></ul>
  17. 17. Сообщества <ul><li>perlmonks.org </li></ul><ul><li>planet.perl.org </li></ul><ul><li>perlsphere.net </li></ul><ul><li>planetsix.perl.org </li></ul><ul><li>planet.parrotcode.org </li></ul><ul><li>blogs.perl.org </li></ul><ul><li>use.perl.org </li></ul><ul><li>ironman.enlightenedperl.org </li></ul><ul><li>reddit.com/r/perl </li></ul>
  18. 18. Сообщества <ul><li>www.pm.org </li></ul><ul><li>moscow.pm.org </li></ul><ul><li>kiev.pm.org </li></ul>
  19. 19. Спасибо ! Олег Алистратов [email_address]

×