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

24
Perl 5.10 以降の新しいやつ 最近僕が使うようになった @azumakuniyuki Cubicroot Co. Ltd. Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

description

Smart match operator, Defined-Or operator, and given-when

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

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

Perl 5.10以降の新しいやつ

最近僕が使うようになった

@azumakuniyukiCubicroot Co. Ltd.

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

自己紹介

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

本題

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

- ~~ スマートマッチ演算子- // Defined-Or演算子- given-when Cのswitch-caseみたいなの

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

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

- if $y ~~ $z;

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

~~ Sample #1my $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; }

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

~~ 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% --

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

~~ 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% --

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

//Defined-Or演算子

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

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

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

// Samplesub 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; }

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

* Ubuntu/Perl 5.12.3 Rate if-defined defined-orif-defined 1153846/s -- -9%defined-or 1267606/s 10% --

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

given-when

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

- given( $x ){ when(m{…}){ …; } default { …; } }

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

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

* Ubuntu/Perl 5.12.3 Rate given-w if-elsegiven-w 548780/s -- -18%if-else 666667/s 21% --

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

はてなさんいつも会場を

ありがとうございます

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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

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

ありがとうございました

Kyoto.pm Tech Talks #01 in 京都::はてなさん 2012/03/17(土)

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