Perl 5.10 в 2010-м
Upcoming SlideShare
Loading in...5
×
 

Perl 5.10 в 2010-м

on

  • 1,545 views

New features of Perl 5.10 as they appear in modern CPAN; where to use them and how to avoid difficulties.

New features of Perl 5.10 as they appear in modern CPAN; where to use them and how to avoid difficulties.

Statistics

Views

Total Views
1,545
Views on SlideShare
1,224
Embed Views
321

Actions

Likes
2
Downloads
7
Comments
0

4 Embeds 321

http://onperl.ru 267
http://www.onperl.ru 44
http://planetperl.ru 9
http://xss.yandex.net 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Perl 5.10 в 2010-м Perl 5.10 в 2010-м Presentation Transcript

  • Perl 5.10 в 2010-м
  • Часть I История и статистика
  • 5.10.0 18 декабря 2007
  • Сегодня 20 февраля 2010
  • Прошло 795 дней
  • За это время 5.10.1
  • За это время 5.11.0, 5.11.1, 5.11.2, 5.11.3, 5.11.4
  • Всего на CPAN ~80 000 модулей
  • Всего на CPAN ~20 000 дистрибутивов
  • Всего на CPAN ~8000 авторов
  • Как часто используют фичи Perl 5.10?
  • ?
  • ~ 200 модулей
  • ~ 100 авторов
  • Часть II Фичи Perl 5.10
  • !"# !"#$%& '' ()*+,$-%&.+-
  • // %"$//$0.10 %"$//$23*!, 23*!,$//$45"!5
  • !6*,75 8*9:+;%&<$= $$$$65:+;0"0<$=>>>? $$$$65:+;@A@<$=>>>? $$$$1:B"C3,$$$=>>>? ?
  • !,",: !CA$7DC+,:)$= $$$$!,",:$%7$'$EF $$$$):,C)+$GG%7F ?
  • ):8:&:! ;HI+"J:K< 4G .L 4N .M .8I+"J:K
  • 00 %7*,#$'$%")8$00$@OD!7D6@F %9"7"+7#=7*,#?$00'$@OD!7D6@F
  • Часть III Как пишут другие
  • Как включить
  • C!:$P>EQEEEEF C!:$P>EQEEQF C!:$P>EQEF C!:$P>EQEREEEF C!:$P>QE>EF C!:$9P>QE>EF C!:$9P>QEF C!:$B:",C):$@SP>QE@F
  • P>QE>E 9P>QE>E 9P>QE vector string version string сокращенно — v-string
  • !"# для отладки
  • 8*9:+$;%"7,*D+<$= $$$$65:+$;0T*+73C1:R7J1S0<$= $$$$$$$$J#$%7J1$'$%75*31NK7D+,:+,F $$$$$$$$%7J1$'/$0T*+73C1:R7J1S;.!U<0F $$$$$$$$J#$%6!$'$%Q$VV$@@F $$$$$$$$%7J1$'/$!0T*+73C1:R7J1S.!U00F $$$$$$$$W!"#;-7J1S%6!%7J1-<F $$$$$$$$%7J1$'$761;<$>$@0@$>$%7J1F $$$$$$$$2DC,(C,$'$X&;%7J1<F $$$$$$$$%75*31NK7D+,:+,;%6!$>$YD*+;%6!Z$2DC,(C,<<F $$$$? [D1SS3:J:+,"3SS])"+!BD)J:)SS^+73C1:$— 08 Jan 2010 include output via files and commands
  • 00 и 00' для значений по умолчанию
  • %(D),$00'$$P_`aF %5D!,$00'$@3D7"35D!,@F %7D3$$00'$@@F [8SSbD"1:) — 07 Jul 2008 Perl extension for loading Postgres tables
  • %",,)c=$J"&YDA$$?$00'$QF %9"3C:$00'$QF %",,)c=$%R$?$00'$EF %",,)c=$9:)AD!:$?$00'$@@F %",,)c=$1:AC8$$$?$00'$@@F %9"3$00'$QF %:&*,$00'$EF %!d*(cNK=$%YDAR*1$?$00'$@ed*($D+$e^fgh[@ [")"33:3SSi:(:+1 — 12 Aug 2009 Parallel-dependent dispatch of perl or shell code
  • !CA$*J(D),$$$= $$$$!5*B,F $$$$J#$4")8!$'$2RF $$$$W$6:$1D$+D,$7"):$"ADC,$"C,D9*9 $$$$%Tg=B*&:1,*J:?$'$%")8!=:(D75RDBB!:,?$00$ $$$$$$$$$$$$$$$$$$$$$jkMSS,*J:F ? B*&:1,*J: — 14 Aug 2008 lexical pragma to fix the epoch offset for time related functions
  • !"#$%"+!6:)$00$ $$$$-^$1D+@,$d+D6$:+DC85$,D$"+!6:)$#DC$#:,>-F g"*3D — 29 Jan 2010 A pluggable Markov engine analogous to MegaHAL
  • J#$%J")("R9:)!*D+$$'$ $$$$%[")!:SSO")("SSlMe^km$00$@C+1:B@F J#$%!DC)7:R9:)!*D+$'$ $$$$%[")!:SSO")("SSeDC)7:SSlMe^km$00$@C+1:B@F %D(,*D+!$00'$=?F [")!:SSO")(" — 14 Dec 2008 Generate Parsers from any BNF grammar
  • J#$%+C33*+8R!#JAD3$' $$%)5!R!#JAD3NKn[")!:SSO")("SS^+,:)+"3SSe#JAD3SSmhbbRob^oep$00$%)5!R!#JAD3F %"7,*D+$00'$%1:B"C3,R"7,*D+F !"#$=%,)"7:RB5? $$$$@[)DA3:J!$7DJ(*3*+8$"7,*D+$BD)$D)*8*+"3$)C3:S$@Z $$$$[")!:SSO")("SSA)*:BRD)*8*+"3R)C3:;%)C3:<F J#$%73D+:$'$%73D+:R")8$00$QF J#$%7C)):+,R(")!:R!:,$'$%(")!:R!:,R")8$00$%1:B"C3,R(")!:R!:,F %75D*7:$00'$EF %3*+:!$00'$nEpF %!DC)7:RD(,*D+!$00'$=?F [")!:SSO")("SS^+,:)+"3SS9"3C",D)$— 14 Dec 2008 Generate Parsers from any BNF grammar
  • J#$%,)"7:RB5$'$%")8R,)"7:RB5$00$;Ue]iMM<F J#$%,)"7:RB5$'$!5*B,F %,)"7:RB5$00'$Ue]iMMF [")!:SSO")("SSM:7D8+*c:)$— 14 Dec 2008 Generate Parsers from any BNF grammar
  • 00 внутри ):,C)+
  • ):,C)+$%!:3BNKR8:,R*+B:7,*D+;$%1*!:"!:NK*1$<$00$EF J#$%9"3$'$%!:3BNKR8:,;%d:#<$00$%1:B"C3,NK=%d:#?F ):,C)+$2=$%!:3BNKR(3"#:)!$00$np$?F f"J:!SS["+1:J*7SSj*,#Z$f"J:!SS["+1:J*7SSjD+B*8$— 07 Sep 2009 f"J:!SSM*!d$— 18 Oct 2008
  • !CA$5DJ:1*)$= $$J#$;%!:3B<$'$2RF $$):XC*):$q*3:SSgDJ:i*)F $$):,C)+$q*3:SSgDJ:i*)NKJ#R5DJ: $$$$00$7)D"d$@q*3:SSgDJ:i*)$!"#!$#DC$5"9:$+D$5DJ: $$$$$$$$$$$$$$1*):7,D)#@F ? o((SSMeeab:"B+D1:$— 02 Feb 2010 post RSS feeds to newsgroups
  • !CA$7D+B*8RB*3:+"J:$= $$J#$;%!:3B<$'$2RF $$):,C)+$%!:3BNK=@7D+B*8RB*3:+"J:@?$00$1D$= $$$$):XC*):$q*3:SSe(:7F $$$$q*3:SSe(:7NK7",B*3:$ $$$$$$$$;%!:3BNK5DJ:1*)Z$@>)!!a3:"B+D1:>7D+B@<F $$?F ? o((SSMeeab:"B+D1:$— 02 Feb 2010 post RSS feeds to newsgroups
  • ):,C)+$ $$$*!D1",:R,DR)B7raa;%1",:$00$%!:3BNK=@+D6raa@?<F ):,C)+$hM^SS]*,3:SS,*,3: $$$$;=$C)3$$'K$;%):!(NK):XC:!,NKC)*$00$@@<Z $$$$$$$1","$'K$%):!(NK1:7D1:1R7D+,:+,$ $$$$$$$;75")!:,$'K$@+D+:@<?<F o((SSMeeab:"B+D1:$— 02 Feb 2010 post RSS feeds to newsgroups
  • ):,C)+$внутри 00
  • J#$%AR,*J:$'$%!:3BNK*,:JR,DR,*J:,;%AR*,:J< $$$00$):,C)+$%"R*,:JF J#$%"R,*J:$'$%!:3BNK*,:JR,DR,*J:,;%"R*,:J<$ $$$00$):,C)+$%AR*,:JFF J#$%!,)$'$%!:3BNK*,:JR,DR1",:;%*,:J<$ $$$00$):,C)+F o((SSMeeab:"B+D1:$— 02 Feb 2010 post RSS feeds to newsgroups
  • ):,C)+$;:3,R,DR:J"*3$;%*,:JNKB*)!,R75*31;@"C,5D)@<< $$$$$$$$00$:3,R,DR:J"*3$;%*,:J$$$NKB*)!,R75*31;@17S7):",D)@<< $$$$$$$$00$:3,R,DR:J"*3$;%*,:J$$$NKB*)!,R75*31;@17S7D+,)*AC,D)@<< $$$$$$$$00$+D+R:J(,#$;%*,:JNKB*)!,R75*31R,:&,;@6*d*SC!:)+"J:@<< $$$$$$$$00$:3,R,DR:J"*3$;%75"++:3NKB*)!,R75*31;@17S7):",D)@<< $$$$$$$$00$:3,R,DR:J"*3$;%75"++:3NKB*)!,R75*31;@"C,5D)@<< $$$$$$$$00$:3,R,DR:J"*3$;%75"++:3NKB*)!,R75*31;@J"+"8*+81*,D)@<< $$$$$$$$00$:3,R,DR:J"*3$;%75"++:3NKB*)!,R75*31;@6:AO"!,:)@<< $$$$$$$$00$:3,R,DR:J"*3$;%*,:J$$$NKB*)!,R75*31;@17S(CA3*!5:)@<< $$$$$$$$00$:3,R,DR:J"*3$;%75"++:3NKB*)!,R75*31;@17S(CA3*!5:)@<< $$$$$$$$00$+D+R:J(,#$;%75"++:3NKB*)!,R75*31R,:&,;@,*,3:@<< $$$$$$$$W$Mqjraa $$$$$$$$00$@+DAD1#2@>%!:3BNKC)*R,DR5D!, $$$$$$$<F o((SSMeeab:"B+D1:$— 02 Feb 2010 post RSS feeds to newsgroups
  • !CA$*,:JR,DR3"+8C"8:$= $$J#$;%!:3BZ$%*,:J<$'$2RF $$J#$%7D+,:+,F $$J#$%):,$'$;:3,R,DR3"+8C"8:;%*,:J< $$$$$$$$$$$$$00$:3,R,DR3"+8C"8:;%*,:JNKB*)!,R75*31;@7D+,:+,@<<<F $$BD)$;FF<$= $$$$%*,:J$'$%*,:JNK("):+,$00$3"!,F $$$$%):,$00'$:3,R,DR3"+8C"8:;%*,:J<F $$? $$%):,$00'$%!:3BNK=@):!(@?NK7D+,:+,R3"+8C"8:F $$):,C)+$%):,F ? o((SSMeeab:"B+D1:$— 02 Feb 2010 post RSS feeds to newsgroups
  • Несколько$00
  • $$$J#$%7"(,C):!$$$$'$%")8$=7"(,C):!?$$$$$$$00$npF $$$J#$%7DJJ:+,$$$$$'$:!7"(:$%")8$=7DJJ:+,?$00$%+"J:$00$--F $$$J#$%C(8)"1:$$$$$'$%")8$=C,BrRC(8)"1:?$$$00$QF $$$J#$%1D6+8)"1:$$$'$%")8$=C,BrR1D6+8)"1:?$00$QF $$$J#$%J",75$$$$$$$'$%")8$=J",75?$$$$$$$$$$00$QF f"J:!SSsCJ(C!$— 24 Nov 2009 Play Hunt the Wumpus
  • 65:+ со скаляром
  • $$$$65*3:$;J#$;%d:#Z$%9"3C:<$'$:"75$4")8<$= $$$$$$$$8*9:+$;%d:#<$= $$$$$$$$$$$$65:+$;-,:!,!-<$= $$$$$$$$$$$$$$$$%]:!,$NK$(3"+$;%9"3C:<F $$$$$$$$$$$$? $$$$$$$$$$$$65:+$;-*J(D),-<$= $$$$$$$$$$$$$$$$%!:3B$NK$:&(D),R,DR3:9:3$;QZ$%!:3BZ$%R<$BD)$2=%9"3C:$VV$np?F $$$$$$$$$$$$? $$$$$$$$$$$$1:B"C3,$= $$$$$$$$$$$$$$$$1*:$-h+d+D6+$D(,*D+$@%d:#@.+-F $$$$$$$$$$$$? $$$$$$$$? $$$$? ]:!,SSM:8:&($— 09 Dec 2009 Test your regular expressions
  • $$$$BD):"75$;25"c")1!<$= $$$$$$$$65:+$;%shO[he<$= $$$$$$$$$$$$%!:3B$NK$3D!:F $$$$$$$$$$$$(C!5$2J:!!"8:!$'K$-kD(!t$uCJ(:1$*+,D$"$sCJ(C!t-F $$$$$$$$? $$$$$$$$65:+$;%[^]<$= $$$$$$$$$$$$%!:3B$NK$3D!:F $$$$$$$$$$$$(C!5$2J:!!"8:!$'K$-vvv^^^^t$q:33$*+$"$(*,t-F $$$$$$$$? $$$$$$$$65:+$;%uo]<$= $$$$$$$$$$$$(C!5$2J:!!"8:!$'K$ $$$$$$$$$$$$$$$$$$-wo[t$eC(:)$A",$!+",75t$3!:65:):9*33:$BD)$#DCt-F $$$$$$$$? $$$$? f"J:!SSsCJ(C!$— 24 Nov 2009 Play Hunt the Wumpus
  • 65:+ для выбора варианта
  • 8*9:+$;%d<$= $$$$65:+$;@B*3:@<$$$$=$%D(,RB*3:$$$$$'$%9F$? $$$$65:+$;@")89@<$$$$=$%D(,R")89$$$$$'$%9F$? $$$$65:+$;@*+,:)@<$$$=$%D(,R*+,:)"7,$'$%9F$? $$$$65:+$;@()DJ(,@<$$=$%D(,R()DJ(,$$$'$%9F$? $$$$65:+$;@XC*:,@<$$$=$%D(,RXC*:,$$$$'$%9F$? $$$$65:+$;@,,#R*+@<$$=$%,,#R*+$$$$$$$'$%9F$? $$$$65:+$;@,,#RDC,@<$=$%,,#RDC,$$$$$$'$%9F$? $$$$1:B"C3,$= $$$$$$$$1*:$-))D)S$*+$!CA)DC,*+:$!:,RD(,;<Z$BDC+1$*+9"3*1$d:#$=%d$'K$@%9@? $$$$$$$$$$$$$;+D,$@B*3:@Z$@")89@Z$@*+,:)@Z$@()DJ(,@Z$@XC*:,@Z $$$$$$$$$$$$$@,,#R*+@$D)$@,,#RDC,@<-F $$$$? ? ]:)JSSiu[)DJ(,$— 18 Dec 2009 Commandline prompt for a database application
  • 8*9:+$;%*+(R,#(< $$$$65:+$;@B@<$>$>$> $$$$65:+$;@"@<$>$>$> $$$$65:+$;@*@<$>$>$> $$$$1:B"C3,$= $$$$$$$$1*:$-^+,:)+"3$:))D)S$,#(:$'$@%*+(R,#(@$;+D,$@B@Z$@"@$D)$@*@<-F $$$$? ? ]:)JSSiu[)DJ(,$— 18 Dec 2009 Commandline prompt for a database application
  • 65:+ с булевым выражением
  • C+3:!!$;$@*,"+@$//$23*!,$<$= $$$$8*9:+$;$3:+8,5$%("!!6D)1$<$= $$$$$$$$65:+$;$Qx$<$= $$$$$$$$$$$$W$Dd $$$$$$$$? $$$$$$$$65:+$;$%R$I$_$<$= $$$$$$$$$$$$1*:;@MMkMS$["!!6D)1$*!$,DD$!5D),$;O*+$_$A#,:!$):XC*):1<@<F $$$$$$$$? $$$$$$$$65:+$;$%R$K$Qx$<$= $$$$$$$$$$$$1*:;@MMkMS$["!!6D)1$*!$,DD$3D+8$;O"&$Qx$A#,:!$"33D6:1<@<F $$$$$$$$? $$$$$$$$1:B"C3,$= $$$$$$$$$$$$65*3:$;Q<$= $$$$$$$$$$$$$$$$%("!!6D)1$>'$@E@F $$$$$$$$$$$$$$$$3"!,$ $$$$$$$$$$$$$$$$$$$$*B$3:+8,5$%("!!6D)1$''$QxF $$$$$$$$$$$$? $$$$$$$$? $$$$? o((SS*]"+SSh,*3!$— 26 Oct 2009 Secure management of iTans for online banking
  • C+3:!!$;$@*,"+@$//$23*!,$<$= $$$$8*9:+$;$3:+8,5$%("!!6D)1$<$= $$$$$$$$65:+$;$Qx$<$= $$$$$$$$$$$$W$Dd $$$$$$$$? $$$$$$$$65:+$;$%R$I$_$<$= $$$$$$$$$$$$1*:;@MMkMS$["!!6D)1$*!$,DD$!5D),$;O*+$_$A#,:!$):XC*):1<@<F $$$$$$$$? $$$$$$$$65:+$;$%R$K$Qx$<$= $$$$$$$$$$$$1*:;@MMkMS$["!!6D)1$*!$,DD$3D+8$;O"&$Qx$A#,:!$"33D6:1<@<F $$$$$$$$? $$$$$$$$1:B"C3,$= $$$$$$$$$$$$65*3:$;Q<$= $$$$$$$$$$$$$$$$%("!!6D)1$>'$@E@F $$$$$$$$$$$$$$$$3"!,$ $$$$$$$$$$$$$$$$$$$$*B$3:+8,5$%("!!6D)1$''$QxF $$$$$$$$$$$$? $$$$$$$$? $$$$? o((SS*]"+SSh,*3!$— 26 Oct 2009 Secure management of iTans for online banking
  • 65:+ с регулярным выражением
  • !CA$)"+8:a3*!,$= $ J#$%R$'$!5*B,F $ 8*9:+$;%R<$= $ $ 65:+$;0T;.1<.N;.1<%0D$<$$$=$):,C)+$-%Q>>%a-$? $ $ 65:+$;0T.1.>.>.1%0D$<$$$$$=$):,C)+$-%R-$? $ $ 65:+$;0T.1%0D$<$$$$$$$$$$$=$):,C)+$%R? $ $ 65:+$;0T;>UH<Z;>U<%0D$<$$$=$):,C)+$)"+8:a3*!,;%Q<>$@Z@ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$>)"+8:a3*!,;%a<? $ $ 1:B"C3,$$$$$$$$$$$$$$$$$$$=$):,C)+$@@? $ ? ? j","3#!,SSi:9:3
  • 65:+ и ):B
  • $$$$8*9:+;):B$%B1:B<= $$$$$$$$65:+;@oMMov@<= ["7d"8:SSq)DJi","$— 14 Jan 2008 generate a package with methods and variables from a data structure
  • 65:+ и C+1:B
  • 8*9:+$;%Q<$= $$$$65:+$;C+1:B<$$=):,C)+? $$$$65:+$;%3:B,<$$=$%1:(,5GGF$? $$$$65:+$;%)*85,<$=$%1:(,5NNF$? ? [")!:SSO")("SSb:&
  • 8*9:+$;%"7,*D+<$= $$$$65:+$;C+1:B<$=F?$$$$W$1D$+D,5*+8 $$$$$$$$$$$$$$$$$$$$$$$$W$M*85,$+D6$1D$+D,5*+8$ $$$$$$$$$$$$$$$$$$$$$$$$W$AC,$B*+1$3:&RXRXCD,: $$$$65:+$;@3:&RXRXCD,:@<$= $$$$$$$$%3:&:)!n%*&p$' $$$$$$$$$$$$n$.y[")!:SSO")("SSb:&SS3:&RXRXCD,:Z $$$$$$$$$$$$$$$%():B*&Z$%!CBB*&$pF $$$$? [")!:SSO")("SSM:7D8+*c:)
  • Вложенные 8*9:+065:+
  • 8*9:+;%+"J:<$= $$$$65:+$;@!,):"JS!,):"J@<$>$>$> $$$$65:+$;@75"33:+8:@<$>$>$> $$$$65:+$;@B"*3C):@<$>$>$> $$$$65:+$;@!,):"JSB:",C):!@<$>$>$>$ $$$$$$$$8*9:+;J#$%73*!,$'$%+D1:NK8:,j5*31):+g"!5;<<$= $$$$$$$$$$$$65:+$;@!,"),,3!@<$>$>$> $$$$$$$$$$$$65:+;@J:75"+*!J!@<$>$>$> $$$$$$$$$$$$$$$$BD):"75;%73*!,NK=@J:75"+*!J!@?NK $$$$$$$$$$$$$$$$$$nEpNK8:,j5*31):+u#]"8m"J:;@U@<< $$$$$$$$$$$$$$$$$$$$65:+;%RNK,:&,jD+,:+,;<$:X$@i^fe]NOiP@$ $$$$$$$$$$$$$$$$$$$$$$D)$%RNK,:&,jD+,:+,;<$:X$@[bo^m@< $$$$$$$$$$$$65:+;@A*+1@<$>$>$> $$$$$$$$$$$$1:B"C3,$>$>$> $$$$65:+$;@()D7::1@<$>$>$> $$$$65:+$;@!C77:!!@<$>$>$> [kSSjDJ(D+:+,SSz"AA:)$— 22 Mar 2009 A POE Component for communicating over Jabber
  • 8*9:+;%+"J:<$= $$$$65:+$;@!,):"JS!,):"J@<$>$>$> $$$$65:+$;@75"33:+8:@<$>$>$> $$$$65:+$;@B"*3C):@<$>$>$> $$$$65:+$;@!,):"JSB:",C):!@<$>$>$> $$$$$$$$8*9:+;J#$%73*!,$'$%+D1:NK8:,j5*31):+g"!5;<<$= $$$$$$$$$$$$65:+$;@!,"),,3!@<$>$>$> $$$$$$$$$$$$65:+;@J:75"+*!J!@<$>$>$>$ $$$$$$$$$$$$$$$$BD):"75;%73*!,NK=@J:75"+*!J!@?NK $$$$$$$$$$$$$$$$$$nEpNK8:,j5*31):+u#]"8m"J:;@U@<< $$$$$$$$$$$$$$$$$$$$65:+;%RNK,:&,jD+,:+,;<$:X$@i^fe]NOiP@$ $$$$$$$$$$$$$$$$$$$$$$D)$%RNK,:&,jD+,:+,;<$:X$@[bo^m@< $$$$$$$$$$$$65:+;@A*+1@<$>$>$> $$$$$$$$$$$$1:B"C3,$>$>$> $$$$65:+$;@()D7::1@<$>$>$>$ $$$$65:+$;@!C77:!!@<$>$>$> [kSSjDJ(D+:+,SSz"AA:)$— 22 Mar 2009 A POE Component for communicating over Jabber
  • BD) и 65:+
  • BD)$;$7",75$<$= $$65:+$;$%RNK*!";@f:,D(,SSbC7*1SS&7:(,*D+SSoMfl@<$<$= $$$$!"#F $$$$W$C!"8:$!,CBB $$$$):,C)+$QF $$? $$1:B"C3,$=$1*:$%R$? ? o((SSj[omSSO*+*SSl*!*,$— 07 Nov 2008 explore each distribution in a minicpan repository
  • //
  • ):,C)+$RB"*3;$%(d8Z$%!CA$<$*B$%R$//$EF *B$;$%",,)$//$0T&(D),RHb:&*7"3%0*$<$= &(D),SSb:&*7"3$— 09 Oct 2008 Lexically scoped subroutine imports
  • 2:&(D),c$$$$'$8):($=$t$;$%R$//$2")8c$<$?$2RF %1*!($//$2:&(D),c$ $$$$$$$$D)$(C!5$2:&(D),cZ$%1*!(F &(D),:)SS[)D&#$— 29 Jan 2010 Simplified symbol export & proxy dispatch
  • 2:&(D),c$$$$'$8):($=$t$;$%R$//$2")8c$<$?$2RF %1*!($//$2:&(D),c$ $$$$$$$$D)$(C!5$2:&(D),cZ$%1*!(F Cool? &(D),:)SS[)D&#$— 29 Jan 2010 Simplified symbol export & proxy dispatch
  • %1*!($//$2:&(D),c$ $$$$$$$$D)$(C!5$2:&(D),cZ$%1*!(F (C!5$2:&(D),cZ$%1*!($C+3:!!$%1*!($//$2:&(D),c
  • BD);$2R$< $$$$= $$$$$$$$*+1:&$%RZ$@S@ $$$$$$$$D)$+:&,F $$$$$$$$*B;$%R$//$2:&(D),c$< $$$$$$$$= $$$$$$$$$$$$J#$%!DC)7:$$'$XC"3*B#R,DR):B$%RZ$%!DC)7:F $$$$$$$$$$$$J#$%*+!,"33$'$XC"3*B#R,DR):B$%RZ$%7"33:)F $$$$$$$$$$$$U%*+!,"33$$$'$U%!DC)7:F $$$$$$$$? $$$$$$$$:3!: $$$$$$$$= $$$$$$$$$$$$1*:$-uD8C!$%!DC)7:S$@%R@$+D,$:&(D),:1-F $$$$$$$$? $$$$? &(D),:)SS[)D&#$— 29 Jan 2010 Simplified symbol export & proxy dispatch
  • BD);$2R$< $$$$= $$$$$$$$*+1:&$%RZ$@S@ $$$$$$$$D)$+:&,F М. б. 65:+? $$$$$$$$*B;$%R$//$2:&(D),c$< $$$$$$$$= $$$$$$$$$$$$J#$%!DC)7:$$'$XC"3*B#R,DR):B$%RZ$%!DC)7:F $$$$$$$$$$$$J#$%*+!,"33$'$XC"3*B#R,DR):B$%RZ$%7"33:)F $$$$$$$$$$$$U%*+!,"33$$$'$U%!DC)7:F $$$$$$$$? $$$$$$$$:3!: $$$$$$$$= $$$$$$$$$$$$1*:$-uD8C!$%!DC)7:S$@%R@$+D,$:&(D),:1-F $$$$$$$$? $$$$? &(D),:)SS[)D&#$— 29 Jan 2010 Simplified symbol export & proxy dispatch
  • 48 файлов, но только в одном (Maplat::Helpers::CommandHelper) используется фича 5.10 O"(3", O"(3",SSs:ASSbD8*+ O"(3",SSg:3(:)!SSuC*31mCJ O"(3",SSs:ASSbD8Dj"75: O"(3",SSg:3(:)!SSjelq*3,:) O"(3",SSs:ASSO:Jj"75: O"(3",SSg:3(:)!SSj"75:SSO:J7"75:1 O"(3",SSs:ASSO:Jj"75:e*J O"(3",SSg:3(:)!SSj"75:SSO:J7"75:1SSf:,[")!:) O"(3",SSs:ASS[",5M:1*):7,*D+ O"(3",SSg:3(:)!SSjDJJ"+1g:3(:) O"(3",SSs:ASS[D!,8):!iu O"(3",SSg:3(:)!SSiue:)*"3*c: O"(3",SSs:ASSe:+1O"*3 O"(3",SSg:3(:)!SSi",:e,)*+8! O"(3",SSs:ASSe:!!*D+e:,,*+8! O"(3",SSg:3(:)!SSbD8D O"(3",SSs:ASSe,"+1")1q*:31! O"(3",SSg:3(:)!SSO"*3bD88:) O"(3",SSs:ASSe,",*7j"75: O"(3",SSg:3(:)!SSO"!7D, O"(3",SSs:ASSe,",C! O"(3",SSg:3(:)!SS["11*+8 O"(3",SSs:ASS]:J(3",:j"75: O"(3",SSg:3(:)!SSe,)*+8! O"(3",SSs:ASSh!:)e:,,*+8! O"(3",SSg:3(:)!SS]:&,bD88:) O"(3",SSs:ASSl")*"A3:!oiO O"(3",SSs:A O"(3",SSsD)d:) O"(3",SSs:ASSu"!:OD1C3: O"(3",SSsD)d:)SSo1J*+jDJJ"+1! O"(3",SSs:ASSu)D6!:)sD)d")DC+1! O"(3",SSsD)d:)SSu"!:OD1C3: O"(3",SSs:ASSjDJJ"+1{C:C: O"(3",SSsD)d:)SSjDJJ"+1! O"(3",SSs:ASSi:AC83D8 O"(3",SSsD)d:)SSi*)j3:"+:) O"(3",SSs:ASSi*)j3:"+:) O"(3",SSsD)d:)SSO:Jj"75: O"(3",SSs:ASSiD7!e:")75 O"(3",SSsD)d:)SSk)"73:iu O"(3",SSs:ASSiD7!e():"1e5::, O"(3",SSsD)d:)SS[D!,8):!iu O"(3",SSs:ASSiD7!sD)1[)D7:!!D) O"(3",SSsD)d:)SSM:(D),*+8 O"(3",SSs:ASS))D)! O"(3",SSsD)d:)SSe:+1O"*3 O"(3",$— 20 Jan 2010 The MAPLAT Web Framework This Module is actually a stub (don't use it)
  • 48 файлов, но только в одном (Maplat::Helpers::CommandHelper) используется фича 5.10 *B;%3*+:NK=*1?$//$4"7,*9:<$ O"(3",$— 20 Jan 2010 The MAPLAT Web Framework This Module is actually a stub (don't use it)
  • Именованные сохраняющие скобки
  • $$$$$J#$%7DJ(*3:1R):8:&$'$X)= $$$$$$$$$.f $$$$$$$$$;HIJo)["R():B*&K%():B*&< $$$$$$$$$;HIJo)["RJ",75K%):8:&< $$$$$$$$$;HIJo)["R!CBB*&K%!CBB*&< $$$$$?&J!F [")!:SSO")("SSM:7D8+*c:)
  • Часть IV Антипаттерны
  • C!:$P>EQEF C!:$B:",C):$@SP>QE@F o((SS]:J(3",:e:)9:)
  • $$$%!5D6R3*+:$00'$Q$ $$$$$$$*B$%!,#3:$:X$@M:8:&(SSjDJJD+@F eJ"),O",75SSeC8") Regexp-CharClasses
  • C!:$e6*,75F !6*,75;%!,):"JNK7D1:7R,#(:<= $ $ $ 7"!:$-9*1:D-$= $ $ $ $ A3:!!$%!,):"JZ$@l*1:DSSqqJ(:8SSole,):"JSSl*1:D@F $ $ $ $ (C!5$2!,):"J!Z$%!,):"JF $ $ $ ? $ $ $ 7"!:$-"C1*D-$= $ $ $ $ A3:!!$%!,):"JZ$@l*1:DSSqqJ(:8SSole,):"JSSoC1*D@F $ $ $ $ (C!5$2!,):"J!Z$%!,):"JF $ $ $ ? $ $ $ 7"!:$-!CA,*,3:-$= $ $ $ $ A3:!!$%!,):"JZ$@l*1:DSSqqJ(:8SSole,):"JSSeCA,*,3:@F $ $ $ $ (C!5$2!,):"J!Z$%!,):"JF $ $ $ ? $ $ $ :3!:$= $ $ $ $ (C!5$2!,):"J!Z$%!,):"JF $ $ $ ? $ $ ? C!:$*B$%p$K'$P>EQQZ$@1:():7",:@F l*1:DSSqqJ(:8SSolqD)J",
  • J#$%():B*&$'$%!#JAD3R():B*&$00$%1:B"C3,R():B*&F %():B*&$'$X)0%():B*&0&J!$*B$1:B*+:1$%():B*&F J#$%!CBB*&$'$%!#JAD3R!CBB*&$00$%1:B"C3,R!CBB*&F %!CBB*&$'$X)0%!CBB*&0&J!$*B$1:B*+:1$%!CBB*&F [")!:SSO")("SSM:7D8+*c:)
  • %*![:)J"b*+d$'$ $$$;37;%8C*1NK",,;@*![:)J"b*+d@<$00$@,)C:@<$ $$$:X$@,)C:@<F o((SSMeeab:"B+D1:$— 02 Feb 2010 post RSS feeds to newsgroups
  • 8*9:+$;$%(")"J!nEp$00$@@$<$= $$$$65:+$;A3:!!:1$%R$yy$%RNK*!";@O",5SSu*8^+,@<<$= $$$$$$$$%A*,$'$%73"!!NK!,)*+8aA*,;!5*B,;2(")"J!<NK"!RA*+;<<F $$$$? $$$$65:+$;J0T.1G%0<$= $$$$$$$$%A*,$'$%73"!!NK*+,aA*,;!5*B,;2(")"J!<<F $$$$? $$$$65:+$;J0TEnAupnEQpG%0<$= $$$$$$$$%A*,$'$%73"!!NK!,)*+8aA*,;!5*B,;2(")"J!<<F $$$$? $$$$65:+$;J0Tn%wMk%kmpG%0<$= $$$$$$$$%A*,$'$%73"!!NKA*,aA*,;!5*B,;2(")"J!<<F $$$$? u*,J"!dSSi","$— 03 Oct 2008 Handle unlimited length bitmasks in an easy and flexible way
  • 65*3:$;$J#$;$%D(,*D+Z$%9"3C:$<$'$:"75$4=%")8!?$<$= $$$$$8*9:+$;%D(,*D+<$= $$$$$$$$$65:+$;@)C3:!@<$= $$$$$$$$$65:+$;@,:)J*+"3!@<$= $$$$$$$$$65:+$;@,)"7:R():1:B*+:1!@<$= $$$$$$$$$65:+$;@!,"),@<$= $$$$$$$$$65:+$;@,)"7:R*,:)",*D+!@<$= $$$$$$$$$65:+$;@"7"1:J*7@<$= $$$$$$$$$65:+$;@,)"7:R()*D)*,*:!@<$= $$$$$$$$$65:+$;@1:B"C3,R+C33R9"3C:@<$= $$$$$$$$$65:+$;@,)"7:R7DJ(3:,*D+!@<$= $$$$$$$$$65:+$;@1:B"C3,R"7,*D+@<$= $$$$$$$$$65:+$;@3D7",*D+R7"33A"7d@<$= $$$$$$$$$65:+$;@1:B"C3,R3:&R():B*&@<$= $$$$$$$$$65:+$;@D("XC:@<$= $$$$$$$$$65:+$;@1:B"C3,R3:&R!CBB*&@<$= $$$$$$$$$65:+$;@7#73:R"7,*D+@<$= $$$$$$$$$65:+$;@"JA*8CDC!R3:&@<$= $$$$$$$$$65:+$;@7#73:R1:(,5@<$= $$$$$$$$$65:+$;@!,)*(@<$= $$$$$$$$$65:+$;@6")+*+8!@<$= $$$$$$$$$65:+$;@,)"7:RB*3:R5"+13:@<$= $$$$$$$$$65:+$;@7D1:R3*+:!@<$= $$$$$$$$$65:+$;@,)"7:R"7,*D+!@<$= $$$$$$$$$65:+$;@"33D6R)"6R!DC)7:@<$= $$$$$$$$$65:+$;@,)"7:R3:&@<$= $$$$$$$$$65:+$;@J"&R(")!:!@<$= $$$$$$$$$65:+$;@,)"7:R3:&R,)*:!@<$= $$$$$$$$$65:+$;@9:)!*D+@<$= $$$$$$$$$65:+$;@,)"7:R3:&RJ",75:!@<$= $$$$$$$$$65:+$;@!:J"+,*7!@<$= $$$$$$$$$65:+$;@,)"7:R9"3C:!@<$= $$$$$$$$$65:+$;@3:&R():"JA3:@<$= $$$$$$$$$65:+$;@,)"7:R)C3:!@<$= $$$$$$$$$65:+$;@():"JA3:@<$= $$$$$$$$$65:+$;@,)"7:R!,)*+8!@<$= $$$$$$$$$1:B"C3,$= [")!:SSO")("SS^+,:)+"3
  • J#$%",,)c $$$$$$$$$$$'$3D7"3$%XC:NK=$",,)*A$? $$$$$$$$$$$'$%YDAa",,)c=$%YDAR*1$? $$$$$$$$$$$00'$%XC:NKJ:)8:R",,)*A;$%YDAR*1$< $$$$$$$$$$$F [")"33:3SSi:(:+1$— 12 Aug 2009 Parallel-dependent dispatch of perl or shell code
  • BD):"75$J#$%!5*(J:+,$;2=%):!(D+!:NK!5*(J:+,?<$= $$$$!"#$->''''''''''''''''''''''''''''''''''''''''''>-F $$$$!"#$-V$e5*(J:+,$%7DC+,$$$$$$$$$$$$$$$$$$$$$$$$$$V-F $$$$!"#$%!5*(J:+,NK!:)*"3*c:NK1)"6F $$$$!"#$--F $$$$*B$;%!:3BNK9:)AD!:<$= $$$$$$$$!"#$%!5*(J:+,NK&J3NK,De,)*+8;Q<F $$$$? $$$$%7DC+,$GGF ? [")"33:3SSi:(:+1$— 12 Aug 2009 Parallel-dependent dispatch of perl or shell code
  • C!:$P>EQEEEEF ()*+,$-.+-F ()*+,$-$75"(,:)!.+-F iliSSM:"1$— 16 Nov 2008 libdvdread perl binding
  • 1DR!DJ:,5*+8;<$00$):,C)+$mk]RqkhmiF
  • 1DR!DJ:,5*+8;<$00$):,C)+$mk]RqkhmiF *!R3:"(R#:");<$ $$$$H$;%+$'$`xx<$ $$$$S$;%+$'$`xP< $$$$F
  • Часть V Где применить
  • Часть V Где применить и как не наступить на грабли
  • Как включить
  • C!:$9P>QEF C!:$OD1:)+SS[:)3F C!:$7DJJD+SS!:+!:F
  • C!:$B:",C):$@SP>QE>Q@F C!:$B:",C):$@SP>QE@F
  • C!:$B:",C):$@SP>QE>Q@F C!:$B:",C):$@SP>QE@F 5.10 читает полностью
  • C!:$B:",C):$@SP>QE>Q@F C!:$B:",C):$@SP>QE@F 5.10 читает полностью C!:$B:",C):$@SP>QE>Q@F C!:$B:",C):$@SP>QE@F 5.10.1 — только первые две части
  • C!:$B:",C):$@SP>QE>Q@F C!:$B:",C):$@SP>QE@F 5.10 читает полностью C!:$B:",C):$@SP>QE>Q@F C!:$B:",C):$@SP>QE@F 5.10.1 — только первые две части C!:$B:",C):$@SP>QE>|@F
  • C!:$:9:)#65:):$X;B:",C):$@SP>QE@<F C!:$O#OD1C3:F O#OD1C3:NKJ#R!CA;%%<F
  • C!:$:9:)#65:):$X;B:",C):$@SP>QE@<F C!:$O#OD1C3:F O#OD1C3:NKJ#R!CA;%%<F ("7d"8:$O#OD1C3:F !CA$J#R!CA$= $$$$!"#$%RnQpF ? QF
  • K$(:)3$N$-!"#$%%F-
  • // для проверки вхождения в список
  • *B$;%3"!,R+"J:$//$2",,:+1::!<$=>>>?
  • // для сравнения списков
  • J#$2"$'$;QZ$`Z$P<F J#$2A$'$;QZ$`Z$P<F !"#$2"$//$2AF$W$Q
  • J#$2"$'$;QZ$`Z$$$$$$P<F J#$2A$'$;QZ$X)0.10Z$P<F !"#$2"$//$2AF$W$Q Осторожно, это не поэлементное сравнение
  • // для проверки аргументов
  • 4$>0!DJ:R()D8)"JJ:$NN1:AC8$N1
  • 4$>0!DJ:R()D8)"JJ:$NN1:AC8$N1 !"#$@i:AC8@$$*B$@NN1:AC8@$//$2oMflF !"#$@i":JD+@$*B$@N1@$//$2oMflF
  • 4$>0!DJ:R()D8)"JJ:$NN1:AC8$N1 !"#$@i:AC8@$$*B$@NN1:AC8@$//$2oMflF !"#$@i":JD+@$*B$@N1@$//$2oMflF !"#$@g:3(@$ $$$$*B$0T;N5VNN5:3(<%0$//$2oMflF
  • Цепочка 00
  • J#$%*($'$ $$$$%ml=}Rg]][RqkMsoMiiRqkM?$00 $$$$%ml=g]][R}RMobR^[?$$$$$$$00 $$$$%ml=MOk]RoiiM?F
  • J#$%*($'$ $$$$%("8:NK(")"J;@):XC:!,R*(@<$00 $$$$%ml=}Rg]][RqkMsoMiiRqkM?$00 $$$$%ml=g]][R}RMobR^[?$$$$$$$00 $$$$%ml=MOk]RoiiM?F Легко обновлять
  • !,",: для счетчиков
  • !CA$7DC+,$= $$$$!,",:$%7F $$$$):,C)+$GG%7F ? !"#$7DC+,;<F$W$Q !"#$7DC+,;<F$W$a
  • !,",:$%7DC+,F C+3:!!$;%7DC+,<$= $$$$W$e{bN~•€•‚ƒ$!:3:7,$7DC+,;U< ? J#$%DBB!:,$'$*+,$)"+1$%7DC+,F W$e{bN~•€•‚ƒ$ W$!:3:7,$>>>$3*J*,$%DBB!:,Z$Q
  • BD) и 65:+
  • C!:$9P>QEF J#$2"))"#$'$;Q>>aE<F J#$%7DC+,$'$EF BD);2"))"#<$= $$$$65:+;0nEa_xrp%0<$= $$$$$$$$%7DC+,GGF $$$$? $$$$!"#F ? !"#$%7DC+,F
  • C!:$9P>QEF J#$2"))"#$'$;Q>>aE<F J#$%7DC+,$'$EF BD);2"))"#<$= $$$$65:+;0nEa_xrp%0<$= $$$$$$$$%7DC+,GGF $$$$? $$$$!"#F ? !"#$%7DC+,F$$W$QE
  • C!:$9P>QEF J#$2"))"#$'$;Q>>aE<F J#$%7DC+,$'$EF BD);2"))"#<$= $$$$65:+;0nEa_xrp%0<$= $$$$$$$$%7DC+,GGF $$$$? $$$$!"#F ? !"#$%7DC+,F$$W$QE
  • Q C!:$9P>QEF ` J#$2"))"#$'$;Q>>aE<F J#$%7DC+,$'$EF P BD);2"))"#<$= | $$$$65:+;0nEa_xrp%0<$= „ $$$$$$$$%7DC+,GGF QQ $$$$? Q` $$$$!"#F QP ? Q| !"#$%7DC+,F$$W$QE Q„
  • C!:$9P>QEF J#$2"))"#$'$;Q>>aE<F J#$%7DC+,$'$EF BD);2"))"#<$= $$$$65:+;0nEa_xrp%0<$= $$$$$$$$%7DC+,GGF$7D+,*+C:F $$$$? $$$$!"#F ? !"#$%7DC+,F$$W$QE
  • K$(:)3P>QE$N$. $$-!"#$BD)$Q>>`- K$(:)3x$N:$. $$-!"#$BD)$Q>>`-
  • K$(:)3P>QE$N$. Q $$-!"#$BD)$Q>>`- a ` K$(:)3x$N:$. .+ $$-!"#$BD)$Q>>`- .+ .+
  • Кроме того Много интересных новых возможностей регулярных выражений
  • Часть V.X RRmiRR Андрей Шитов andy@shitov.ru talks.shitov.ru