Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
outerinside
5,832 views
20年越しで Perl 4 to 5 した話
株式会社スカイアーク様の支援で YAPC::Asia Tokyo 2012 で発表した LT のスライドです
Read more
1
Save
Share
Embed
Embed presentation
1
/ 28
2
/ 28
3
/ 28
4
/ 28
5
/ 28
6
/ 28
7
/ 28
8
/ 28
9
/ 28
10
/ 28
11
/ 28
12
/ 28
13
/ 28
14
/ 28
15
/ 28
16
/ 28
17
/ 28
18
/ 28
19
/ 28
20
/ 28
21
/ 28
22
/ 28
23
/ 28
24
/ 28
25
/ 28
26
/ 28
27
/ 28
28
/ 28
More Related Content
PPT
2017年夏のPerl
by
charsbar
PDF
Shibuya JVM Groovy 20150418
by
Uehara Junji
PPT
CPANの依存モジュールをもう少し正しく検出したい
by
charsbar
PDF
Write good parser in perl
by
Jiro Nishiguchi
PPT
2017年春のPerl
by
charsbar
PPTX
php7's ast
by
do_aki
PPTX
CMSとPerlで遊ぼう
by
Daiki Ichinose
PDF
Everyday Life with clojure.spec
by
Kent Ohashi
2017年夏のPerl
by
charsbar
Shibuya JVM Groovy 20150418
by
Uehara Junji
CPANの依存モジュールをもう少し正しく検出したい
by
charsbar
Write good parser in perl
by
Jiro Nishiguchi
2017年春のPerl
by
charsbar
php7's ast
by
do_aki
CMSとPerlで遊ぼう
by
Daiki Ichinose
Everyday Life with clojure.spec
by
Kent Ohashi
What's hot
KEY
モダンmod_perl入門 #yapcasia
by
鉄次 尾形
PPT
2018年夏のPerl5
by
charsbar
PDF
ocamloptの全体像
by
Kiwamu Okabe
PDF
from old Java to modern Java
by
心 谷本
PDF
PHPの今とこれから 2013
by
Rui Hirokawa
PPT
How to debug a perl script using gdb
by
akirahiguchi
PDF
One - Common Lispでもワンライナーしたい
by
t-sin
PPTX
【簡単テキストマイニング】歌詞から作品世界の魅力を探る
by
Show T
PDF
awk v.s. bashどっちが強い?@OSC2011Tokyo
by
Ryuichi Ueda
PDF
Haskell で CLI
by
Nobutada Matsubara
PDF
Clojureで作る"simple"なDSL
by
Kent Ohashi
PDF
Perl勉強会#2資料
by
Kiyo Tsunezumi
PDF
about Perl5.10
by
Kazuki KOMORI
PDF
Local php-100828 2
by
Akio Ishida
PDF
Traitsについて
by
Tetsuji Koyama
PDF
Kotlin勉強会 in ehime
by
Eigoro Yamamura
PDF
Node.js Error & Debug Leveling
by
kumatch kumatch
PDF
Lisp batton - Common LISP
by
Masaomi CHIBA
PDF
Write up reverse200
by
Yuichi Nagayama
PDF
HHVM Hack
by
Masaaki Yonebayashi
モダンmod_perl入門 #yapcasia
by
鉄次 尾形
2018年夏のPerl5
by
charsbar
ocamloptの全体像
by
Kiwamu Okabe
from old Java to modern Java
by
心 谷本
PHPの今とこれから 2013
by
Rui Hirokawa
How to debug a perl script using gdb
by
akirahiguchi
One - Common Lispでもワンライナーしたい
by
t-sin
【簡単テキストマイニング】歌詞から作品世界の魅力を探る
by
Show T
awk v.s. bashどっちが強い?@OSC2011Tokyo
by
Ryuichi Ueda
Haskell で CLI
by
Nobutada Matsubara
Clojureで作る"simple"なDSL
by
Kent Ohashi
Perl勉強会#2資料
by
Kiyo Tsunezumi
about Perl5.10
by
Kazuki KOMORI
Local php-100828 2
by
Akio Ishida
Traitsについて
by
Tetsuji Koyama
Kotlin勉強会 in ehime
by
Eigoro Yamamura
Node.js Error & Debug Leveling
by
kumatch kumatch
Lisp batton - Common LISP
by
Masaomi CHIBA
Write up reverse200
by
Yuichi Nagayama
HHVM Hack
by
Masaaki Yonebayashi
Similar to 20年越しで Perl 4 to 5 した話
PPTX
私がPerlを使う理由
by
Yohei Azekatsu
KEY
Perl 非同期プログラミング
by
lestrrat
PDF
私とOSS活動とPerl
by
Shunsuke Maeda
PDF
Perl6で遊ぼう
by
VienosNotes
PPTX
Perl logging
by
keroyonn
PPTX
Perlと出会い、Perlを作る
by
goccy
PDF
「やっぱり怖かったPerl」In Kichijoji.pm #2
by
民人 青山
PDF
初めてのPerl
by
arvelt s
PDF
Perl入学式をやってみた! - YAPC::Asia 2012
by
Takayuki Fukumoto
PDF
大ざっぱにオブジェクト指向
by
azuma satoshi
PDF
安全なプログラムの作り方
by
Kazuhiro Nishiyama
PPTX
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
by
Chihiro Fukazawa
PDF
正規表現勉強会入門
by
Shugo Numano
PDF
「Perl怖い」 In Chiba.pm #3
by
民人 青山
PDF
Strawberry Perlのススメ@Kansai.pm#11
by
Kazuki KOMORI
PPTX
ゼロからプログラミング講座(Perl) #1 @越谷 講義ノート
by
Wataru Sekiguchi
PDF
Roppongi pm-when-camel-was-pink
by
近藤 嘉雪
PDF
"What Does Your Code Smell Like?"で学ぶPerl6
by
risou
PPT
20130725 perl beginners_9
by
Syun Fuji
PDF
Chibapm41_version_upload
by
Yoichi Hirota
私がPerlを使う理由
by
Yohei Azekatsu
Perl 非同期プログラミング
by
lestrrat
私とOSS活動とPerl
by
Shunsuke Maeda
Perl6で遊ぼう
by
VienosNotes
Perl logging
by
keroyonn
Perlと出会い、Perlを作る
by
goccy
「やっぱり怖かったPerl」In Kichijoji.pm #2
by
民人 青山
初めてのPerl
by
arvelt s
Perl入学式をやってみた! - YAPC::Asia 2012
by
Takayuki Fukumoto
大ざっぱにオブジェクト指向
by
azuma satoshi
安全なプログラムの作り方
by
Kazuhiro Nishiyama
実録『すぐわかるPerl』〜社内ツール悲喜こもごも〜
by
Chihiro Fukazawa
正規表現勉強会入門
by
Shugo Numano
「Perl怖い」 In Chiba.pm #3
by
民人 青山
Strawberry Perlのススメ@Kansai.pm#11
by
Kazuki KOMORI
ゼロからプログラミング講座(Perl) #1 @越谷 講義ノート
by
Wataru Sekiguchi
Roppongi pm-when-camel-was-pink
by
近藤 嘉雪
"What Does Your Code Smell Like?"で学ぶPerl6
by
risou
20130725 perl beginners_9
by
Syun Fuji
Chibapm41_version_upload
by
Yoichi Hirota
20年越しで Perl 4 to 5 した話
1.
20 年越しで Perl
4 to 5 した話 SATOH, Koichi Sep 29 2012 YAPC::Asia Tokyo
2.
謝辞 ✤
「遠方からの参加者支援制度」に補助を頂きました。 株式会社スカイアーク様に御礼申し上げます。
3.
自己紹介 ✤
佐藤光一 ✤ 岡山大学大学院 自然言語処理研究室 ✤ Twitter: @outerinside Github: https://github.com/sekia/ ✤ Blog: http://outer-inside.blogspot.com/
4.
研究室にありがちなこと
5.
研究室にありがちなこと ✤
文書がない ✤ テストがない ✤ バージョン管理されてない ✤ コードが古い
6.
研究室にありがちなこと ✤
文書がない ✤ テストがない ✤ バージョン管理されてない ✤ コードが古い ✤ コードが古い
7.
研究室にありがちなこと ✤
文書がない ✤ テストがない ✤ バージョン管理されてない ✤ コードが古い ✤ コードが古い ✤ コードがすごく古い
8.
研究室にありがちなこと ✤
研究室紹介にて: 「この研究室では Perl を主に使っています」
9.
研究室にありがちなこと ✤
研究室紹介にて: 「この研究室では Perl を主に使っています」 OpenPipe('/usr/local/bin/chasen', C_OUT, C_IN); sub OpenPipe { ← IPC::Open2 (コアモジュール) の再発明 local($pid); local($prg, *OUT, *IN) = @_; ← local 変数・型グロブ pipe(R, IN); ← Bare word なファイルハンドル pipe(OUT, W); unless ($pid = fork) { close(IN); close(OUT); open(STDIN, '<&R') || die "Errorn"; open(STDOUT, '>&W') || die "Errorn"; open(STDERR, '>&W') || die "Errorn"; close(R); close(W); select(STDIN); $| = 1; select(STDOUT); $| = 1; select(STDERR); $| = 1; exec($prg); print STDERR "Open error!n"; exit(0); } close(R); close(W); select(IN); $| = 1; select(STDOUT); }
10.
研究室にありがちなこと ✤
研究室紹介にて: 「この研究室では Perl 4 を主に使っています」(処理系は Perl 5) OpenPipe('/usr/local/bin/chasen', C_OUT, C_IN); sub OpenPipe { ← IPC::Open2 (コアモジュール) の再発明 local($pid); local($prg, *OUT, *IN) = @_; ← local 変数・型グロブ pipe(R, IN); ← Bare word なファイルハンドル pipe(OUT, W); unless ($pid = fork) { close(IN); close(OUT); open(STDIN, '<&R') || die "Errorn"; open(STDOUT, '>&W') || die "Errorn"; open(STDERR, '>&W') || die "Errorn"; close(R); close(W); select(STDIN); $| = 1; select(STDOUT); $| = 1; select(STDERR); $| = 1; exec($prg); print STDERR "Open error!n"; exit(0); } close(R); close(W); select(IN); $| = 1; select(STDOUT); }
11.
Perl 4 to
5! Perl 5 to 6 http://perlgeek.de/en/article/5-to-6
12.
研究室にありがちなこと ✤
せめて10年近代化したい Perl 4.036 1993 (last release of Perl 4) 1994 Perl 5.000 1998 Perl 5.005 2000 Perl 5.6.0 2002 Perl 5.8.0 2007 Perl 5.10.0 2010 Perl 5.12.0 Perl 4 Perl 5 Perl 6 2011 Perl 5.14.0 2012 Perl 5.16.0
13.
Perl 5 の(20年前からある)新機能 ✤
CPAN! ✤ Unicode (Perl 5.8+) ✤ my 変数 ✤ 高階関数 ✤ オブジェクト指向プログラミング Perl 4 Perl 5 Perl 6 ✤ ……
14.
CPAN ✤
これは説明不要だった ✤ Text::*, Lingua::* 超便利 ✤ 車輪が大分減った
15.
Unicode ✤
私「日本語の言語資源今までどうやって処理してたんですか」
16.
Unicode ✤
私「日本語の言語資源今までどうやって処理してたんですか」 → 「全部 EUC-JP」「えっ」「えっ」
17.
Unicode ✤
私「日本語の言語資源今までどうやって処理してたんですか」 → 「全部 EUC-JP」「えっ」「えっ」 「この XML 文書 UTF-8 で書かれてるんだけどどうやって EUC に したら良い?」「」 404 Blog Not Found:perl - Encode 入門 http://blog.livedoor.jp/dankogai/archives/51031595.html
18.
my 変数・高階関数 ✤
local はグローバル変数に一時的な値を与えるだけ (Perl 6 だと temp) ✤ my はスコープに入る毎に別の変数。スコープ外からはアクセス不能 ✤ クロージャに固有の状態を持たせたければ my を使うしかない
19.
my 変数・高階関数 ✤
local はグローバル変数に一時的な値を与えるだけ (Perl 6 だと temp) ✤ my はスコープに入る毎に別の変数。スコープ外からはアクセス不能 ✤ クロージャに固有の状態を持たせたければ my を使うしかない ✤ 「自由変数は関数生成時の束縛を探すんですよ」 とか ! っぽいことを言ったら何故か理解された
20.
オブジェクト指向 ✤
私「Moose を使いましょう! Mooooooooooooooose」 → ハードル高すぎた。DSL は中身を理解して使うもの
21.
オブジェクト指向 ✤
Perl OOP の変なところ ✤ 名前空間 = クラス ✤ クラスは名前空間に所属するよ派: C++, Java, etc. ✤ クラス (とか) がオープンだから名前空間的に使って良いよ派: Ruby, JavaScript ✤ 名前空間がクラス (のつもり) だよ派: Perl 5
22.
オブジェクト指向 ✤
のっけから use でつまづく ✤ 「use Foo::Bar で Foo::Bar クラスが使えるんだよね」 「いやそうとは限りませんよ」「えっ」「えっ」 ✤ Foo/Bar.pm に package Foo::Bar が宣言されている保証はな い ✤ package Foo::Bar がクラスである保証もない
23.
オブジェクト指向 ✤
namespace 的なものを package に期待するとハマる package Foo::Bar { sub func { ... } } package Foo { Bar::func(); # ねーよ }
24.
オブジェクト指向 ✤
namespace 的なものを package に期待するとハマる package Foo { package Bar { say __PACKAGE__; # "Bar" (not "Foo::Bar") } }
25.
オブジェクト指向 ✤
Perl の OOP は単に関数解決の約束事 (言い過ぎ) package Foo; sub new { bless +{ msg => $_[1] } => $_[0] } sub say { say shift->{msg} } package main; my $obj = Foo->new('hello'); $obj->say; # "hello"
26.
オブジェクト指向 ✤
Perl の OOP は単に関数解決の約束事 (言い過ぎ) package Foo; sub new { bless +{ msg => $_[1] } => $_[0] } sub say { say shift->{msg} } package main; my $obj = Foo->new('hello'); $obj->say; # "hello" my $meth = $obj->can('say'); $obj->$meth; # ditto
27.
オブジェクト指向 ✤
Perl の OOP は単に関数解決の約束事 (言い過ぎ) package Foo; sub new { bless +{ msg => $_[1] } => $_[0] } sub say { say shift->{msg} } package main; my $obj = Foo->new('hello'); $obj->say; # "hello" my $meth = $obj->can('say'); $obj->$meth; # ditto +{ msg => 'baa' }->$meth; # "baa"
28.
思ったこと(小並感) ✤
20年前のコードも動く ✤ が、読めない・書きたくない ✤ 最近は比較的 Perl 5 なコードが書けて幸せ ✤ 自分を救うために今からでも Perl 4 to 5
Editor's Notes
#2
\n
#3
\n
#4
\n
#5
\n
#6
\n
#7
\n
#8
\n
#9
\n
#10
\n
#11
\n
#12
\n
#13
\n
#14
\n
#15
\n
#16
\n
#17
\n
#18
\n
#19
\n
#20
\n
#21
\n
#22
\n
#23
\n
#24
\n
#25
\n
#26
\n
#27
\n
#28
\n
#29
\n