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

Post on 24-Jun-2015

1.002 views 0 download

description

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

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

Perl 5.10以降の新しいやつ

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

@azumakuniyukiCubicroot Co. Ltd.

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

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

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.

自己紹介- 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.

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.

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.

本題

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

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

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.

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

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

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

スマートマッチ演算子- 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.

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

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

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

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

//Defined-Or演算子

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

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

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.

// 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.

// 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.

given-when

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

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

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.

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.

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.

はてなさんいつも会場を

ありがとうございます

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.