about perl5.10

69
about Perl5.10 id:lapis25 [email protected] Kansai.pm Meeting #9/20080531 1

Upload: kazuki-komori

Post on 25-Jun-2015

2.720 views

Category:

Technology


2 download

DESCRIPTION

Kansai.pm Meeting #9

TRANSCRIPT

Page 1: about Perl5.10

about Perl5.10id:lapis25

[email protected] Meeting #9/20080531

1

Page 2: about Perl5.10

Perlの歴史

• 1987 1.0

• 1988 2.0

• 1989 3.0

• 1991 4.0

• 1994 5.0

22

Page 3: about Perl5.10

Perl5の歴史

• 1994 5.0

• (略

• 2000 5.6

• 2002 5.8

• 2007 5.10

33

Page 4: about Perl5.10

Perl5.10.0

• 2007/12/18 リリース

44

Page 5: about Perl5.10

今日の内容• Perl5.10

• 後方互換性

• 追加された機能

• ……の一部紹介(全部はムリ)

55

Page 7: about Perl5.10

活字で読みたい

• Recent Perl World#12 / ITO NaoyaWEB+DB PRESS Vol.43

77

Page 8: about Perl5.10

今日の結論• リリースからもうすぐ半年

• 5.10コワクナイヨ

• もっと使っていきましょう

88

Page 9: about Perl5.10

99

Page 10: about Perl5.10

後方互換性

1010

Page 11: about Perl5.10

後方互換性

• Perlのいままでのバージョンと同様に極力後方互換性を維持している

1111

Page 12: about Perl5.10

互換のない修正

• pack()/unpack()でutf-8エンコードされた文字列の処理変更

• 疑似ハッシュの廃止

• warningsプラグマがCarpをロードしなくなった

• etc...

1212

Page 13: about Perl5.10

追加された機能

1313

Page 14: about Perl5.10

featureプラグマ

1414

Page 15: about Perl5.10

featureプラグマ• 後方互換性のない新しい構文を有効にするた

めのプラグマ

• レキシカルスコープ

1515

Page 16: about Perl5.10

featureプラグマ• say

• switch

• state

1616

Page 17: about Perl5.10

featureプラグマ

use feature ’say’;

1717

Page 18: about Perl5.10

featureプラグマ

use feature qw(say switch state);

1818

Page 19: about Perl5.10

featureプラグマ

use feature qw(:5.10);

• すべての機能が有効になる

1919

Page 20: about Perl5.10

featureプラグマ

use 5.10;

• featureプラグマが暗黙的にロードされる

2020

Page 21: about Perl5.10

featureプラグマ

use feature qw(say switch state); use feature qw(:5.10);use 5.10;

2121

Page 22: about Perl5.10

新しいコマンドラインスイッチ

2222

Page 23: about Perl5.10

one-liner

• one-liner用コマンドラインスイッチ

• いままでも -e があるよね?

2323

Page 24: about Perl5.10

-eスイッチ

% perl -e 'print "hello, world!\n"'

2424

Page 25: about Perl5.10

-Eスイッチ

% perl -E 'say "hallo, perl5.10!"'

2525

Page 26: about Perl5.10

-Eスイッチ

• one-liner用のコマンドラインスイッチ

• perl5.10の機能を有効にして実行

2626

Page 27: about Perl5.10

27

Page 28: about Perl5.10

say

2828

Page 29: about Perl5.10

Say

• 改行付きprint

2929

Page 30: about Perl5.10

Print

print "Hello, world!\n"

3030

Page 31: about Perl5.10

Say

say 'Hello, world!'

3131

Page 32: about Perl5.10

Print

print "$_\n" for @lines;

3232

Page 33: about Perl5.10

Say

say for @lines;

3333

Page 34: about Perl5.10

switch

3434

Page 35: about Perl5.10

switch

• Perlにもswitch文が!

• ただし構文はswitch/caseではなくgiven/when

3535

Page 36: about Perl5.10

given/whenuse feature 'switch';given ($foo) { when (/^abc/) { $abc = 1; } when (/^def/) { $def = 1; } when (/^xyz/) { $xyz = 1; } default { $not = 1; }}

3636

Page 37: about Perl5.10

for/whenuse feature 'switch';for (@foo) { when (/^abc/) { $abc = 1; } when (/^def/) { $def = 1; } when (/^xyz/) { $xyz = 1; } default { $not = 1; }}

3737

Page 38: about Perl5.10

smart match

3838

Page 39: about Perl5.10

~~

3939

Page 40: about Perl5.10

smart match

• 比較対象によって比較の方法が変わる

• whenでもスマートマッチが行われる

• 単独で使う場合は~~

• 詳しくはperldoc perlsynで

4040

Page 41: about Perl5.10

state

4141

Page 42: about Perl5.10

state変数• my local ourに続く変数宣言 state

• 変数宣言時に一度だけ初期化される変数

• スコープはブロックの範囲内

4242

Page 43: about Perl5.10

クロージャ• クロージャを使って書いていた処理を

{ my $i = 0; sub func { $i++ }}

4343

Page 44: about Perl5.10

state変数• すっきりかける

use feature 'state';sub func { state $i = 0; $i++;}

4444

Page 45: about Perl5.10

45

Page 46: about Perl5.10

//46

46

Page 47: about Perl5.10

dor

4747

Page 48: about Perl5.10

Defined-or

4848

Page 49: about Perl5.10

Defined-or

• こう書いていたのが

defined $a ? $a : $b

4949

Page 50: about Perl5.10

Defined-or

• こう書けます

$a // $b

5050

Page 51: about Perl5.10

//の優先度• || とまったくいっしょ

• 低優先度版のerr演算子はなくなりました

5151

Page 52: about Perl5.10

named capture

5252

Page 53: about Perl5.10

named capture

• 正規表現で名前付きでキャプチャできる

• 構文は(?<NAME>)

• \k<NAME> で後方参照可能

• キャプチャした内容には%+ハッシュでアクセス可能

5353

Page 54: about Perl5.10

named capture

54

s/(?<letter>.)\k<letter>/$+{letter}/g

54

Page 55: about Perl5.10

ファイルテスト演算子

5555

Page 56: about Perl5.10

ファイルテスト演算子

-x $file && -w _ && -f _

5656

Page 57: about Perl5.10

ファイルテスト演算子• まとめて書けるように

-f -w -x $file

5757

Page 58: about Perl5.10

……他にもいろいろあります

5858

Page 59: about Perl5.10

• 宣言することで$_をレキシカルに

• mroプラグマ

• UNIVERSAL::DOES()

• no VERSIONで指定したバージョンより古いPerlを使いたいことを表現

• %^H でレキシカルプラグマを実装可能に

5959

Page 60: about Perl5.10

新しいコアモジュール

6060

Page 61: about Perl5.10

• encoding::warnings

• Module::CoreList

• Math::BigInt::FastCalc

• Compress::Zlib

• IO::Zlib

• Archive::Tar

• Digest::SHA

• ExtUtils::CBuilder

• ExtUtils::ParseXS

• Hash::Util::FieldHash

• Module::Build

• Module::Load

• Module::Loaded

• Package::Constants

• Win32API::File

• Locale::Maketext::Simple

• Params::Check

• Term::UI

• Object::Accessor

• Module::Pluggable

• Module::Load::Conditiona

• Time::Piece

• IPC::Cmd

• File::Fetch

• Log::Message

• Log::Message::Simple

• Archive::Extract

• CPANPLUS

• Pod::Escapes

• Pod::Simple6161

Page 62: about Perl5.10

Perl5.10を使うには

6262

Page 63: about Perl5.10

Perl5.10を使うには

• fedora9は5.10

• debian(sid)は5.10になったようです

• MacPortsにもperl5.10あります

• ActivePerlも5.10

• いっそソースからインストール

6363

Page 64: about Perl5.10

まとめ

6464

Page 65: about Perl5.10

Perl5.10はふつうに使えそう

6565

Page 66: about Perl5.10

早速インストール!

6666

Page 67: about Perl5.10

ご静聴ありがとうございました

6767

Page 68: about Perl5.10

questions?

6868

Page 69: about Perl5.10

参考資料

• perl5100deltahttp://fleur.hio.jp/perldoc/perl/5.10.0/pod/perl5100delta.mix.html

• What's new in Perl 5.10?http://www.slideshare.net/acme/whats-new-in-perl-510

• Recent Perl World#12 / ITO NaoyaWEB+DB PRESS Vol.43

6969