SlideShare a Scribd company logo
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)
最近僕が使うようになった



  Perl 5.10
以降の新しいやつ
          @azumakuniyuki
             Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




         Kyoto.pm設立
       おめでとうございます。


                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




                                自己紹介


                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   自己紹介
       -   Azuma, Kuniyuki
       -   (@|id:)azumakuniyuki
       -   サーバ管理者(*BSD, Linux, 昔はSolarisも)
       -   プログラマ(Perl, /bin/sh, たまにC, R)
       -   京都市(六角衣棚)



                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   Perl
       - /bin/shで書きにくい場合はPerl
       - 2008年秋からモダンPerlを勉強
         - モダンPerl入門+CPANモジュールガイド
       - YAPC::Asia(2回参加・登壇)
       - Kansai.pm(2回参加・発表)



                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   Perlで作ったもの
       -   bounceHammer(ばうんすはんまー)
       -   バウンスメール解析専用
       -   コマンドラインツール+WebUI
       -   OpenSource! 2010/03〜
       -   http://bouncehammer.jp/
       - DBIx::Skinny使ってます

                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




                                        本題


                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   Perl 5.10以降の新機能
       - サンプルコードではまだあまり見かけない
       - 色が変わらないのがある(Vim)
       - レンタルサーバとかまだPerl 5.8.8


       - ~~ スマートマッチ演算子
       - // Defined-Or演算子
       - given-when Cのswitch-caseみたいなの
                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




               ~~
           スマートマッチ演算子


                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   スマートマッチ演算子
       - grep { $x eq $_ } @list;



       - $x ~~ @list;
       - if $y == $z;



       - if $y ~~ $z;
                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   ~~ Sample #1
       my $d = [ 'gmail.com', 'hotmail.com', ];
       sub grepit {
         my $x = shift;
         return 1 if grep { $x eq $_ } @$d; }
       sub smart {
         my $x = shift;
         return 1 if $x ~~ @$d; }

                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   ~~ Benchmark #1
       * MacBook Air/perl 5.14.2
                    Rate grep eq smart~~
       grep eq 1011236/s      --    -28%
       smart~~ 1406250/s     39%      --

       * Ubuntu/Perl 5.12.3
                   Rate grep eq smart~~
       grep eq 666667/s      --    -30%
       smart~~ 957447/s     44%      --
                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   ~~ Sample #2
       my $n = [ 1 .. 55 ];
       sub grepit {
         my $x = shift;
         return 1 if grep { $x == $_ } @$n; }
       sub smart {
         my $x = shift;
         return 1 if $x ~~ @$n; }

                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   ~~ Benchmark #2
       * MacBook Air/perl 5.14.2
                   Rate grep == smart~~
       grep == 286624/s      --    -45%
       smart~~ 523256/s     83%      --

       * Ubuntu/Perl 5.12.3
                   Rate grep == smart~~
       grep == 187110/s       --   -55%
       smart~~ 412844/s     121%     --
                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




                     //
               Defined-Or演算子


                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   Defined-Or演算子
       - my $x = $y || $z; # $y = 0?
       - my $x = defined $y ? $y : $z;

       - my $x = $y // $z;


                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   // Sample
       sub ifdefined {
         my( $x, $y ) = @_;
         my $z = defined $x ? $x : $y;
         return 1 if $z == 0; }
       sub definedor {
         my( $x, $y ) = @_;
         my $z = $x // $y;
         return 1 if $z == 0; }
                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   // Benchmark
       * MacBook Air/perl 5.14.2
                       Rate if-defined defined-or
       if-defined 1666667/s         --       -11%
       defined-or 1875000/s        12%         --

       * Ubuntu/Perl 5.12.3
                       Rate if-defined defined-or
       if-defined 1153846/s         --        -9%
       defined-or 1267606/s        10%         --
                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




                          given-when


                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




    given - when
       - if( $x =~ m{…} ){
           …; } else { …; }

       - given( $x ){
           when(m{…}){ …; }
           default { …; } }
                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   given-when Sample
       sub ifelse {
         my $x = shift;
         if( $x =~ m/[@]gmail[.]comz/ ){
         …;
         }elsif( $x =~ m/[@]hotmail[.]comz/ ){…; } }
       sub givenwhen {
         my $x = shift();
         given( $x ){
           when( m/[@]gmail[.]comz/ ){ …; }
           when( m/[@]hotmail[.]comz/ ){ …; }
           default { …; } } }

                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




   given-when Benchmark
       * MacBook Air/perl 5.14.2
                    Rate given-w if-else
       given-w 769231/s       --    -26%
       if-else 1046512/s     36%      --

       * Ubuntu/Perl 5.12.3
                   Rate given-w if-else
       given-w 548780/s      --    -18%
       if-else 666667/s     21%      --
                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




             はてなさん
             いつも会場を
           ありがとうございます

                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)




                          ありがとう
                         ございました


                                          Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.

More Related Content

最近僕が使うようになったPerl 5.10以降の新しいやつ

  • 1. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) 最近僕が使うようになった Perl 5.10 以降の新しいやつ @azumakuniyuki Cubicroot Co. Ltd.
  • 2. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) Kyoto.pm設立 おめでとうございます。 Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 3. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) 自己紹介 Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 4. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) 自己紹介 - Azuma, Kuniyuki - (@|id:)azumakuniyuki - サーバ管理者(*BSD, Linux, 昔はSolarisも) - プログラマ(Perl, /bin/sh, たまにC, R) - 京都市(六角衣棚) Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 5. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) Perl - /bin/shで書きにくい場合はPerl - 2008年秋からモダンPerlを勉強 - モダンPerl入門+CPANモジュールガイド - YAPC::Asia(2回参加・登壇) - Kansai.pm(2回参加・発表) Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 6. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) Perlで作ったもの - bounceHammer(ばうんすはんまー) - バウンスメール解析専用 - コマンドラインツール+WebUI - OpenSource! 2010/03〜 - http://bouncehammer.jp/ - DBIx::Skinny使ってます Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 7. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) 本題 Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 8. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) Perl 5.10以降の新機能 - サンプルコードではまだあまり見かけない - 色が変わらないのがある(Vim) - レンタルサーバとかまだPerl 5.8.8 - ~~ スマートマッチ演算子 - // Defined-Or演算子 - given-when Cのswitch-caseみたいなの Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 9. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) ~~ スマートマッチ演算子 Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 10. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) スマートマッチ演算子 - grep { $x eq $_ } @list; - $x ~~ @list; - if $y == $z; - if $y ~~ $z; Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 11. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) ~~ Sample #1 my $d = [ 'gmail.com', 'hotmail.com', ]; sub grepit { my $x = shift; return 1 if grep { $x eq $_ } @$d; } sub smart { my $x = shift; return 1 if $x ~~ @$d; } Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 12. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) ~~ Benchmark #1 * MacBook Air/perl 5.14.2 Rate grep eq smart~~ grep eq 1011236/s -- -28% smart~~ 1406250/s 39% -- * Ubuntu/Perl 5.12.3 Rate grep eq smart~~ grep eq 666667/s -- -30% smart~~ 957447/s 44% -- Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 13. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) ~~ Sample #2 my $n = [ 1 .. 55 ]; sub grepit { my $x = shift; return 1 if grep { $x == $_ } @$n; } sub smart { my $x = shift; return 1 if $x ~~ @$n; } Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 14. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) ~~ Benchmark #2 * MacBook Air/perl 5.14.2 Rate grep == smart~~ grep == 286624/s -- -45% smart~~ 523256/s 83% -- * Ubuntu/Perl 5.12.3 Rate grep == smart~~ grep == 187110/s -- -55% smart~~ 412844/s 121% -- Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 15. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) // Defined-Or演算子 Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 16. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) Defined-Or演算子 - my $x = $y || $z; # $y = 0? - my $x = defined $y ? $y : $z; - my $x = $y // $z; Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 17. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) // Sample sub ifdefined { my( $x, $y ) = @_; my $z = defined $x ? $x : $y; return 1 if $z == 0; } sub definedor { my( $x, $y ) = @_; my $z = $x // $y; return 1 if $z == 0; } Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 18. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) // Benchmark * MacBook Air/perl 5.14.2 Rate if-defined defined-or if-defined 1666667/s -- -11% defined-or 1875000/s 12% -- * Ubuntu/Perl 5.12.3 Rate if-defined defined-or if-defined 1153846/s -- -9% defined-or 1267606/s 10% -- Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 19. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) given-when Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 20. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) given - when - if( $x =~ m{…} ){ …; } else { …; } - given( $x ){ when(m{…}){ …; } default { …; } } Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 21. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) given-when Sample sub ifelse { my $x = shift; if( $x =~ m/[@]gmail[.]comz/ ){ …; }elsif( $x =~ m/[@]hotmail[.]comz/ ){…; } } sub givenwhen { my $x = shift(); given( $x ){ when( m/[@]gmail[.]comz/ ){ …; } when( m/[@]hotmail[.]comz/ ){ …; } default { …; } } } Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 22. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) given-when Benchmark * MacBook Air/perl 5.14.2 Rate given-w if-else given-w 769231/s -- -26% if-else 1046512/s 36% -- * Ubuntu/Perl 5.12.3 Rate given-w if-else given-w 548780/s -- -18% if-else 666667/s 21% -- Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 23. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) はてなさん いつも会場を ありがとうございます Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.
  • 24. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土) ありがとう ございました Some of new features from Perl 5.10 @azumakuniyuki / Cubicroot Co. Ltd.