Что новогов Perl 5.14
perldoc perlhist
5.10.02007−Dec−18
5.10 вышелна 20-летие языка
¿Кто из вас пользуется   версией >= 5.10?— Молодой человек, опрос!
Появился say
¿ Кто из васприменяет    say      ?
Шутки шутками, но
Началась новая   история
Modern Perl
Modern Perl
Modern Perl
Понятие Modern Perlчасто переоценивают
На самом деле это не
Это была книгаиздания 2009 года
OK, смотрим дальше  perldoc perlhist
и пропускаем нечетные  версии (5.11, 5.13) —    они dev dev dev
5.12.02010−Apr−12
¿Кто из вас пользуется   версией >= 5.12?     — Как пр             ойти на Y                         APC?
5.14.0RC12011−Apr−20
RC — эторелиз-кандидат
ПотомRC2
А потомRC3
Не, Perl 6-то, конечно,еще дольше
Perl 5.14 точнобудет в этом году
Даже, может,на этой неделе
Что новогов Perl 5.14?
perldoc perldelta
perldelta == 5.14 – 5.12
NoticeAs described in perlpolicy, therelease of Perl 5.14.0 marks theofficial end of support for Perl5.10. Users of Perl 5....
ПереводЧуваки, если вы еще на модном5.10, то вы старперы.
Если серьезно, то обновиться    все-такине всегда просто
Особеннопереустановить  все модули
Кто знает, как?
Новое
1Синтаксис
2Безопасность
Здесьвспоминается...
register_globals = off $_GET["sql"]    В PHPначиная с 4.2.0
Перл и такбезопасен
PHP —Perl на РусиАнатолий Шарифулин
3Несовместимости!
4Устаревшее
5Производи- тельность
6Модули и прагмы
7Документация
8Диагностика
9Утилиты
10Установка
11Платформы
12Внутренности
13Багфиксы
14Опечатки
Мы посмотримтолько на новый   синтаксис и регулярные  выражения
(Так-то, пора бы иWelcome, Perl 6.0!)
Юникод сразупролез в регексы   и строки
Это звоночек!(Глупое маркетинговое слово)
ASCII-символ  BELL (0x7)
А в Unicode 6.0BELL — 0x1F514
Панико!
Perl спокоен   и мудр
Perl спокоен   и мудр...наверное
В перлеBELL	  =	  0x0007
В перле  BELL	  =	  0x0007N{BELL}	  =	  0x0007
В перле   BELL	  =	  0x0007N{BELL}	  =	  0x0007  0x0007	  =	  ALERT
BELL	  =	  0x0007N{BELL}	  =	  0x0007  0x0007	  =	  ALERT   ALERT	  =	  "a"
BELL	  =	  0x0007N{BELL}	  =	  0x0007  0x0007	  =	  ALERT   ALERT	  =	  "a"N{BEL}	  =	  0x0007
BELL	  =	  0x0007N{BELL}	  =	  0x0007  0x0007	  =	  ALERT   ALERT	  =	  "a"N{BEL}	  =	  0x00070x1F514	  —	  без имени
0x0007	  =	  ALERT                 ALERT	  =	  "a"        N{BEL}	  =	  0x0007       0x1F514	  —	  без имени              0...
0x1F514	  —	  без имени              0x1F514	  =	  	  	  	  	  	  	  N{U+1F514}        Планы на Perl 5.16 N{BELL}	  =	  0x...
 	  	  	  	  	  N{U+1F514}         Планы на Perl 5.16  N{BELL}	  =	  0x1F514     прежний N{BELL}	    заменить	  N{ALERT},	...
use	  feature	  unicode_strings;
С ней будет счастье
Все и везде окажетсяв юникоде
Чтобы включитьновые возможности
use v5.14;
Заодноподключится и  use strict;
5.10.0          v5.10.0          v5.10vector stringversion stringсокращенно — v-string
Новшествав регулярныхвыражениях
(?^	  .	  .	  .)
Локально    сбрасываетвсе модификаторы
"ABC"	  =~	  /abc/i;          True
"ABC"	  =~	  /a(?^:b)c/i;       False
"ABC"	  =~	  /a(?^i:b)c/i;       True
Хитрое обоснование
$	  perl5.14.0	  -­‐MData::Dumper	  -­‐Emy	  $x	  =	  qr/abc/;	  say	  Dumper($x)$VAR1	  =	  qr/(?^u:abc)/;          Не из...
$	  perl5.10.0	  -­‐MData::Dumper	  -­‐Emy	  $x	  =	  qr/abc/;	  say	  Dumper($x)$VAR1	  =	  qr/(?-­‐xism:abc)/;          ...
Новыемодификаторы
/l        ==use	  locale;
/u            ==    use	  feature	  unicode_strings;
/d           ~~    no	  locale;    no	  feature	  unicode_strings;
по нию    ол ча              /d ум           ~~    no	  locale;    no	  feature	  unicode_strings;
/a
Сколькосимволов совпадет c?       /d/
Сколькосимволов совпадет c?       /d/     ±420
for	  (0x0	  ..	  0x10FFFF)	  {	  	  	  	  my	  $char	  =	  chr($_);	  	  	  	  say	  $char	  	  	  	  	  	  	  	  if	  $c...
С /d/ совпадет все,   что в юникодесчитается цифрой
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,٠ ٩ ,٨ ,٧ ,٦ ,٥ ,٤ ,٣ ,٢ ,١, ੦,੧, ੨, ੩, ੪, ੫, ੬, ੭, ੮, ੯, ૦, ૧,૨, ૩, ૪, ૫, ૬, ૭, ૮, ૯, ௦, ௧, ...
d стало причиной   разногласий     и споров
Поведение /d стабильное, но спорное  d
Встречайте   /a
for	  (0x0	  ..	  0x10FFFF)	  {	  	  	  	  my	  $char	  =	  chr($_);	  	  	  	  say	  $char	  	  	  	  	  	  	  	  if	  $c...
Совпадут только 10    символов из ASCII$	  perl	  a1.pl	  |	  wc	  -­‐l10
/a создает ASCII-версиимодификаторов   d, s и w
И влияет наповедение b и B
Модификатор /r
Non-destructive substitution
Подстановка,не изменяющая   оригинал
use	  v5.14;my	  $version	  =	  "Perl	  5.10";say	  $version	  =~	  s/5.10/5.14/r;	  Результат: Perl	  5.14
my $old = "Погода в Ленинграде";my $new = $old =~ s/Ленинград/Санкт-Петербург/r;
Работас массивами  и хешами
Можно убрать все лишнее
Этоэкспериментальная      фича
use	  v5.14;my	  $a	  =	  [];push	  $a,	  3,	  5,	  7;
use	  v5.10;my	  $a	  =	  [];push	  @$a,	  3,	  5,	  7;
(Как @a[1] в Perl 6)
А также
push/pop	  @$arrayrefpush/pop	  $arrayref
shift/unshift	  @$arrayrefshift/unshift	  $arrayref
splice	  @$arrayrefsplice	  $arrayref
keys/values	  %$hashrefkeys/values	  $hashref
keys/values	  @$arrayrefkeys/values	  $arrayref
each	  %$href	  /	  @$aref each	  $href	  /	  $aref
given возвращает    последнее  вычисленное    значение
say	  mysub(7);sub	  mysub	  {	  	  	  	  given($_[0])	  {	   	  	  	  	  	  	  "мало"	  	  when	  3;	   	  	  	  	  	  	 ...
(Для любителейне писать return)
Чей вклад?
Aaron Crane, Abhijit Menon-Sen, Abigail, Ævar Arnfjörð Bjarmason, Alastair Douglas, AlexanderAlekseev, Alexander Hartmaier...
use v5.14 or die;
Или хотя бы
use v5.14 or v5.12 ;-)
__END__Андрей Шитов   andy@shitov.ru
Что нового в Perl 5.14
Что нового в Perl 5.14
Что нового в Perl 5.14
Что нового в Perl 5.14
Что нового в Perl 5.14
Upcoming SlideShare
Loading in …5
×

Что нового в Perl 5.14

6,837 views

Published on

Обзор новых возможностей версии Perl 5.14

Published in: Technology
1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
6,837
On SlideShare
0
From Embeds
0
Number of Embeds
2,962
Actions
Shares
0
Downloads
18
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Что нового в Perl 5.14

  1. 1. Что новогов Perl 5.14
  2. 2. perldoc perlhist
  3. 3. 5.10.02007−Dec−18
  4. 4. 5.10 вышелна 20-летие языка
  5. 5. ¿Кто из вас пользуется версией >= 5.10?— Молодой человек, опрос!
  6. 6. Появился say
  7. 7. ¿ Кто из васприменяет say ?
  8. 8. Шутки шутками, но
  9. 9. Началась новая история
  10. 10. Modern Perl
  11. 11. Modern Perl
  12. 12. Modern Perl
  13. 13. Понятие Modern Perlчасто переоценивают
  14. 14. На самом деле это не
  15. 15. Это была книгаиздания 2009 года
  16. 16. OK, смотрим дальше perldoc perlhist
  17. 17. и пропускаем нечетные версии (5.11, 5.13) — они dev dev dev
  18. 18. 5.12.02010−Apr−12
  19. 19. ¿Кто из вас пользуется версией >= 5.12? — Как пр ойти на Y APC?
  20. 20. 5.14.0RC12011−Apr−20
  21. 21. RC — эторелиз-кандидат
  22. 22. ПотомRC2
  23. 23. А потомRC3
  24. 24. Не, Perl 6-то, конечно,еще дольше
  25. 25. Perl 5.14 точнобудет в этом году
  26. 26. Даже, может,на этой неделе
  27. 27. Что новогов Perl 5.14?
  28. 28. perldoc perldelta
  29. 29. perldelta == 5.14 – 5.12
  30. 30. NoticeAs described in perlpolicy, therelease of Perl 5.14.0 marks theofficial end of support for Perl5.10. Users of Perl 5.10 or earliershould consider upgrading to amore recent release of Perl.
  31. 31. ПереводЧуваки, если вы еще на модном5.10, то вы старперы.
  32. 32. Если серьезно, то обновиться все-такине всегда просто
  33. 33. Особеннопереустановить все модули
  34. 34. Кто знает, как?
  35. 35. Новое
  36. 36. 1Синтаксис
  37. 37. 2Безопасность
  38. 38. Здесьвспоминается...
  39. 39. register_globals = off $_GET["sql"] В PHPначиная с 4.2.0
  40. 40. Перл и такбезопасен
  41. 41. PHP —Perl на РусиАнатолий Шарифулин
  42. 42. 3Несовместимости!
  43. 43. 4Устаревшее
  44. 44. 5Производи- тельность
  45. 45. 6Модули и прагмы
  46. 46. 7Документация
  47. 47. 8Диагностика
  48. 48. 9Утилиты
  49. 49. 10Установка
  50. 50. 11Платформы
  51. 51. 12Внутренности
  52. 52. 13Багфиксы
  53. 53. 14Опечатки
  54. 54. Мы посмотримтолько на новый синтаксис и регулярные выражения
  55. 55. (Так-то, пора бы иWelcome, Perl 6.0!)
  56. 56. Юникод сразупролез в регексы и строки
  57. 57. Это звоночек!(Глупое маркетинговое слово)
  58. 58. ASCII-символ BELL (0x7)
  59. 59. А в Unicode 6.0BELL — 0x1F514
  60. 60. Панико!
  61. 61. Perl спокоен и мудр
  62. 62. Perl спокоен и мудр...наверное
  63. 63. В перлеBELL  =  0x0007
  64. 64. В перле BELL  =  0x0007N{BELL}  =  0x0007
  65. 65. В перле BELL  =  0x0007N{BELL}  =  0x0007 0x0007  =  ALERT
  66. 66. BELL  =  0x0007N{BELL}  =  0x0007 0x0007  =  ALERT ALERT  =  "a"
  67. 67. BELL  =  0x0007N{BELL}  =  0x0007 0x0007  =  ALERT ALERT  =  "a"N{BEL}  =  0x0007
  68. 68. BELL  =  0x0007N{BELL}  =  0x0007 0x0007  =  ALERT ALERT  =  "a"N{BEL}  =  0x00070x1F514  —  без имени
  69. 69. 0x0007  =  ALERT ALERT  =  "a" N{BEL}  =  0x0007 0x1F514  —  без имени 0x1F514  =              N{U+1F514}
  70. 70. 0x1F514  —  без имени 0x1F514  =              N{U+1F514} Планы на Perl 5.16 N{BELL}  =  0x1F514
  71. 71.            N{U+1F514} Планы на Perl 5.16 N{BELL}  =  0x1F514 прежний N{BELL}   заменить  N{ALERT},   N{BEL}  или  "a"
  72. 72. use  feature  unicode_strings;
  73. 73. С ней будет счастье
  74. 74. Все и везде окажетсяв юникоде
  75. 75. Чтобы включитьновые возможности
  76. 76. use v5.14;
  77. 77. Заодноподключится и use strict;
  78. 78. 5.10.0 v5.10.0 v5.10vector stringversion stringсокращенно — v-string
  79. 79. Новшествав регулярныхвыражениях
  80. 80. (?^  .  .  .)
  81. 81. Локально сбрасываетвсе модификаторы
  82. 82. "ABC"  =~  /abc/i; True
  83. 83. "ABC"  =~  /a(?^:b)c/i; False
  84. 84. "ABC"  =~  /a(?^i:b)c/i; True
  85. 85. Хитрое обоснование
  86. 86. $  perl5.14.0  -­‐MData::Dumper  -­‐Emy  $x  =  qr/abc/;  say  Dumper($x)$VAR1  =  qr/(?^u:abc)/; Не изменится, когда появятся новые модификаторы
  87. 87. $  perl5.10.0  -­‐MData::Dumper  -­‐Emy  $x  =  qr/abc/;  say  Dumper($x)$VAR1  =  qr/(?-­‐xism:abc)/; Изменится, когда появятся новые модификаторы
  88. 88. Новыемодификаторы
  89. 89. /l ==use  locale;
  90. 90. /u == use  feature  unicode_strings;
  91. 91. /d ~~ no  locale; no  feature  unicode_strings;
  92. 92. по нию ол ча /d ум ~~ no  locale; no  feature  unicode_strings;
  93. 93. /a
  94. 94. Сколькосимволов совпадет c? /d/
  95. 95. Сколькосимволов совпадет c? /d/ ±420
  96. 96. for  (0x0  ..  0x10FFFF)  {        my  $char  =  chr($_);        say  $char                if  $char  =~  /^d$/;}
  97. 97. С /d/ совпадет все, что в юникодесчитается цифрой
  98. 98. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,٠ ٩ ,٨ ,٧ ,٦ ,٥ ,٤ ,٣ ,٢ ,١, ੦,੧, ੨, ੩, ੪, ੫, ੬, ੭, ੮, ੯, ૦, ૧,૨, ૩, ૪, ૫, ૬, ૭, ૮, ૯, ௦, ௧, ௨, ௩, ௪, ௫, ௬, ௭, ௮, ௯, ...
  99. 99. d стало причиной разногласий и споров
  100. 100. Поведение /d стабильное, но спорное d
  101. 101. Встречайте /a
  102. 102. for  (0x0  ..  0x10FFFF)  {        my  $char  =  chr($_);        say  $char                if  $char  =~  /^d$/a;}
  103. 103. Совпадут только 10 символов из ASCII$  perl  a1.pl  |  wc  -­‐l10
  104. 104. /a создает ASCII-версиимодификаторов d, s и w
  105. 105. И влияет наповедение b и B
  106. 106. Модификатор /r
  107. 107. Non-destructive substitution
  108. 108. Подстановка,не изменяющая оригинал
  109. 109. use  v5.14;my  $version  =  "Perl  5.10";say  $version  =~  s/5.10/5.14/r;  Результат: Perl  5.14
  110. 110. my $old = "Погода в Ленинграде";my $new = $old =~ s/Ленинград/Санкт-Петербург/r;
  111. 111. Работас массивами и хешами
  112. 112. Можно убрать все лишнее
  113. 113. Этоэкспериментальная фича
  114. 114. use  v5.14;my  $a  =  [];push  $a,  3,  5,  7;
  115. 115. use  v5.10;my  $a  =  [];push  @$a,  3,  5,  7;
  116. 116. (Как @a[1] в Perl 6)
  117. 117. А также
  118. 118. push/pop  @$arrayrefpush/pop  $arrayref
  119. 119. shift/unshift  @$arrayrefshift/unshift  $arrayref
  120. 120. splice  @$arrayrefsplice  $arrayref
  121. 121. keys/values  %$hashrefkeys/values  $hashref
  122. 122. keys/values  @$arrayrefkeys/values  $arrayref
  123. 123. each  %$href  /  @$aref each  $href  /  $aref
  124. 124. given возвращает последнее вычисленное значение
  125. 125. say  mysub(7);sub  mysub  {        given($_[0])  {              "мало"    when  3;              "ОК"        when  5;              "много"  when  7;              "?";        }}
  126. 126. (Для любителейне писать return)
  127. 127. Чей вклад?
  128. 128. Aaron Crane, Abhijit Menon-Sen, Abigail, Ævar Arnfjörð Bjarmason, Alastair Douglas, AlexanderAlekseev, Alexander Hartmaier, Alexandr Ciornii, Alex Davies, Alex Vandiver, Ali Polatel, Allen Smith,Andreas König, Andrew Rodland, Andy Armstrong, Andy Dougherty, Aristotle Pagaltzis, Arkturuz,Arvan, A. Sinan Unur, Ben Morrow, Bo Lindbergh, Boris Ratner, Brad Gilbert, Bram, brian d foy, BrianPhillips, Casey West, Charles Bailey, Chas. Owens, Chip Salzenberg, Chris BinGOs Williams,chromatic, Craig A. Berry, Curtis Jewell, Dagfinn Ilmari Mannsåker, Dan Dascalescu, Dave Rolsky,David Caldwell, David Cantrell, David Golden, David Leadbeater, David Mitchell, David Wheeler, EricBrine, Father Chrysostomos, Fingle Nark, Florian Ragwitz, Frank Wiegand, Franz Fasching, GeneSullivan, George Greer, Gerard Goossen, Gisle Aas, Goro Fuji, Grant McLean, gregor herrmann,H.Merijn Brand, Hongwen Qiu, Hugo van der Sanden, Ian Goodacre, James E Keenan, James Mastros,Jan Dubois, Jay Hannah, Jerry D. Hedden, Jesse Vincent, Jim Cromie, Jirka Hruška, John Peacock,Joshua ben Jore, Joshua Pritikin, Karl Williamson, Kevin Ryde, kmx, Lars Dɪᴇᴄᴋᴏᴡ , LarwanBerke, Leon Brocard, Leon Timmermans, Lubomir Rintel, Lukas Mai, Maik Hentsche, Marty Pauley,Marvin Humphrey, Matt Johnson, Matt S Trout, Max Maischein, Michael Breen, Michael Fig, Michael GSchwern, Michael Parker, Michael Stevens, Michael Witten, Mike Kelly, Moritz Lenz, Nicholas Clark,Nick Cleaton, Nick Johnston, Nicolas Kaiser, Niko Tyni, Noirin Shirley, Nuno Carvalho, Paul Evans,Paul Green, Paul Johnson, Paul Marquess, Peter J. Holzer, Peter John Acklam, Peter Martini, PhilippeBruhat (BooK), Piotr Fusik, Rafael Garcia-Suarez, Rainer Tammer, Reini Urban, Renee Baecker, RicardoSignes, Richard Möhn, Richard Soderberg, Rob Hoelz, Robin Barker, Ruslan Zakirov, Salvador Fandiño,Salvador Ortiz Garcia, Shlomi Fish, Sinan Unur, Sisyphus, Slaven Rezic, Steffen Müller, Steve Hay,Steven Schubiger, Steve Peters, Sullivan Beck, Tatsuhiko Miyagawa, Tim Bunce, Todd Rinaldo, TomChristiansen, Tom Hukins, Tony Cook, Tye McQueen, Vadim Konovalov, Vernon Lyon, Vincent Pit, WaltMankowski, Wolfram Humann, Yves Orton, Zefram и Zsbán Ambrus.
  129. 129. use v5.14 or die;
  130. 130. Или хотя бы
  131. 131. use v5.14 or v5.12 ;-)
  132. 132. __END__Андрей Шитов andy@shitov.ru

×