Download - about Perl5.10
![Page 2: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/2.jpg)
Perlの歴史
• 1987 1.0
• 1988 2.0
• 1989 3.0
• 1991 4.0
• 1994 5.0
22
![Page 3: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/3.jpg)
Perl5の歴史
• 1994 5.0
• (略
• 2000 5.6
• 2002 5.8
• 2007 5.10
33
![Page 4: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/4.jpg)
Perl5.10.0
• 2007/12/18 リリース
44
![Page 5: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/5.jpg)
今日の内容• Perl5.10
• 後方互換性
• 追加された機能
• ……の一部紹介(全部はムリ)
55
![Page 6: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/6.jpg)
すべてを知りたいなら• perldoc perl5100delta
• 和訳
• http://fleur.hio.jp/perldoc/mix/pod/perl5100delta.mix.html
66
![Page 7: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/7.jpg)
活字で読みたい
• Recent Perl World#12 / ITO NaoyaWEB+DB PRESS Vol.43
77
![Page 8: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/8.jpg)
今日の結論• リリースからもうすぐ半年
• 5.10コワクナイヨ
• もっと使っていきましょう
88
![Page 9: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/9.jpg)
99
![Page 10: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/10.jpg)
後方互換性
1010
![Page 11: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/11.jpg)
後方互換性
• Perlのいままでのバージョンと同様に極力後方互換性を維持している
1111
![Page 12: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/12.jpg)
互換のない修正
• pack()/unpack()でutf-8エンコードされた文字列の処理変更
• 疑似ハッシュの廃止
• warningsプラグマがCarpをロードしなくなった
• etc...
1212
![Page 13: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/13.jpg)
追加された機能
1313
![Page 14: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/14.jpg)
featureプラグマ
1414
![Page 15: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/15.jpg)
featureプラグマ• 後方互換性のない新しい構文を有効にするた
めのプラグマ
• レキシカルスコープ
1515
![Page 16: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/16.jpg)
featureプラグマ• say
• switch
• state
1616
![Page 17: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/17.jpg)
featureプラグマ
use feature ’say’;
1717
![Page 18: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/18.jpg)
featureプラグマ
use feature qw(say switch state);
1818
![Page 19: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/19.jpg)
featureプラグマ
use feature qw(:5.10);
• すべての機能が有効になる
1919
![Page 20: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/20.jpg)
featureプラグマ
use 5.10;
• featureプラグマが暗黙的にロードされる
2020
![Page 21: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/21.jpg)
featureプラグマ
use feature qw(say switch state); use feature qw(:5.10);use 5.10;
2121
![Page 22: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/22.jpg)
新しいコマンドラインスイッチ
2222
![Page 23: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/23.jpg)
one-liner
• one-liner用コマンドラインスイッチ
• いままでも -e があるよね?
2323
![Page 24: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/24.jpg)
-eスイッチ
% perl -e 'print "hello, world!\n"'
2424
![Page 25: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/25.jpg)
-Eスイッチ
% perl -E 'say "hallo, perl5.10!"'
2525
![Page 26: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/26.jpg)
-Eスイッチ
• one-liner用のコマンドラインスイッチ
• perl5.10の機能を有効にして実行
2626
![Page 27: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/27.jpg)
27
![Page 28: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/28.jpg)
say
2828
![Page 29: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/29.jpg)
Say
• 改行付きprint
2929
![Page 30: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/30.jpg)
print "Hello, world!\n"
3030
![Page 31: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/31.jpg)
Say
say 'Hello, world!'
3131
![Page 32: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/32.jpg)
print "$_\n" for @lines;
3232
![Page 33: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/33.jpg)
Say
say for @lines;
3333
![Page 34: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/34.jpg)
switch
3434
![Page 35: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/35.jpg)
switch
• Perlにもswitch文が!
• ただし構文はswitch/caseではなくgiven/when
3535
![Page 36: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/36.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/37.jpg)
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](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/38.jpg)
smart match
3838
![Page 39: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/39.jpg)
~~
3939
![Page 40: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/40.jpg)
smart match
• 比較対象によって比較の方法が変わる
• whenでもスマートマッチが行われる
• 単独で使う場合は~~
• 詳しくはperldoc perlsynで
4040
![Page 41: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/41.jpg)
state
4141
![Page 42: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/42.jpg)
state変数• my local ourに続く変数宣言 state
• 変数宣言時に一度だけ初期化される変数
• スコープはブロックの範囲内
4242
![Page 43: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/43.jpg)
クロージャ• クロージャを使って書いていた処理を
{ my $i = 0; sub func { $i++ }}
4343
![Page 44: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/44.jpg)
state変数• すっきりかける
use feature 'state';sub func { state $i = 0; $i++;}
4444
![Page 45: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/45.jpg)
45
![Page 46: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/46.jpg)
//46
46
![Page 47: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/47.jpg)
dor
4747
![Page 48: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/48.jpg)
Defined-or
4848
![Page 49: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/49.jpg)
Defined-or
• こう書いていたのが
defined $a ? $a : $b
4949
![Page 50: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/50.jpg)
Defined-or
• こう書けます
$a // $b
5050
![Page 51: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/51.jpg)
//の優先度• || とまったくいっしょ
• 低優先度版のerr演算子はなくなりました
5151
![Page 52: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/52.jpg)
named capture
5252
![Page 53: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/53.jpg)
named capture
• 正規表現で名前付きでキャプチャできる
• 構文は(?<NAME>)
• \k<NAME> で後方参照可能
• キャプチャした内容には%+ハッシュでアクセス可能
5353
![Page 54: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/54.jpg)
named capture
54
s/(?<letter>.)\k<letter>/$+{letter}/g
54
![Page 55: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/55.jpg)
ファイルテスト演算子
5555
![Page 56: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/56.jpg)
ファイルテスト演算子
-x $file && -w _ && -f _
5656
![Page 57: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/57.jpg)
ファイルテスト演算子• まとめて書けるように
-f -w -x $file
5757
![Page 58: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/58.jpg)
……他にもいろいろあります
5858
![Page 59: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/59.jpg)
• 宣言することで$_をレキシカルに
• mroプラグマ
• UNIVERSAL::DOES()
• no VERSIONで指定したバージョンより古いPerlを使いたいことを表現
• %^H でレキシカルプラグマを実装可能に
5959
![Page 60: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/60.jpg)
新しいコアモジュール
6060
![Page 61: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/61.jpg)
• 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](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/62.jpg)
Perl5.10を使うには
6262
![Page 63: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/63.jpg)
Perl5.10を使うには
• fedora9は5.10
• debian(sid)は5.10になったようです
• MacPortsにもperl5.10あります
• ActivePerlも5.10
• いっそソースからインストール
6363
![Page 64: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/64.jpg)
まとめ
6464
![Page 65: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/65.jpg)
Perl5.10はふつうに使えそう
6565
![Page 66: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/66.jpg)
早速インストール!
6666
![Page 67: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/67.jpg)
ご静聴ありがとうございました
6767
![Page 68: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/68.jpg)
questions?
6868
![Page 69: about Perl5.10](https://reader033.vdocument.in/reader033/viewer/2022060118/558beec9d8b42a145c8b4643/html5/thumbnails/69.jpg)
参考資料
• 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