Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Perl MongerのためのGoの始め方
Search
karupanerura
March 30, 2016
Technology
2
2.2k
Perl MongerのためのGoの始め方
Gotanda.pm #8
(2016-03-31 16:30) 37ページがおもいっきり間違っているので修正したものを後ほどUPします
karupanerura
March 30, 2016
Tweet
Share
More Decks by karupanerura
See All by karupanerura
GoでParserを書く
karupanerura
5
820
マイ隙間家具OSSたちのご紹介
karupanerura
2
240
Mustache Template 話 2024
karupanerura
0
7
1つの言語を原点に色々な言語を学ぶということ
karupanerura
4
2.8k
Javaの実装をPerlでテストする
karupanerura
0
1.1k
Go Generics Overview
karupanerura
0
1.2k
Japan.pm 2021 開催まで至る道
karupanerura
0
2k
Perl MongersのためのAWS_CDK入門
karupanerura
0
100
Webシステムのパフォーマンス・チューニング
karupanerura
2
800
Other Decks in Technology
See All in Technology
comilioとCloudflare、そして未来へと向けて
oliver_diary
6
470
自社 200 記事を元に整理した読みやすいテックブログを書くための Tips 集
masakihirose
2
360
JAWS-UG20250116_iOSアプリエンジニアがAWSreInventに行ってきた(真面目編)
totokit4
0
170
第27回クラウド女子会 ~re:Invent 振り返りLT会~ 私の周辺で反響のあった re:Invent 2024 アップデートつれづれ/reinvent-2024-update-reverberated-around-me
emiki
1
310
月間60万ユーザーを抱える 個人開発サービス「Walica」の 技術スタック変遷
miyachin
2
690
2025年の挑戦 コーポレートエンジニアの技術広報/techpr5
nishiuma
0
150
【NGK2025S】動物園(PINTO_model_zoo)に遊びに行こう
kazuhitotakahashi
0
290
デジタルアイデンティティ技術 認可・ID連携・認証 応用 / 20250114-OIDF-J-EduWG-TechSWG
oidfj
2
720
技術に触れたり、顔を出そう
maruto
1
160
[JSAC 2025 LT] Introduction to MITRE ATT&CK utilization tools by multiple LLM agents and RAG
4su_para
1
120
dbtを中心にして組織のアジリティとガバナンスのトレードオンを考えてみた
gappy50
0
350
FinJAWS_reinvent2024_recap_database
asahihidehiko
2
140
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
67
4.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
20
2.4k
Typedesign – Prime Four
hannesfritz
40
2.5k
Building an army of robots
kneath
302
45k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Agile that works and the tools we love
rasmusluckow
328
21k
Writing Fast Ruby
sferik
628
61k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
870
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Transcript
Perl MongerͷͨΊͷ Goͷ࢝Ίํ id:karupanerura Gotanda.pm #8
About me • Kenta SATO (id:karupanerura) • Perl/Go/Swift/Kotlin/Java/Crystal/C99/etc.. • Gotanda.pm
Author • Senior Engineer at Mobile Factory, Inc. • WebApp/iOS/Android/Operation/etc..
͓͜ͱΘΓ • ͝Γ͝Γॻ͍͍ͯΔਓ͚Ͱ͋Γ·ͤΜ • ஆ͔͍ϚαΧϦΛ͓ئ͍͠·͢ • PerlͱPerl6Ͱͳ͘Perl5Λࢦ͠·͢ • Perl6ͱPerl5ผͷݴޠͰ͢ʢຊʹʣ
͓͜ͱΘΓ • ݪཧతͷઆ໌Λ͢ΔͨΊʹϕετϓϥΫςΟ ε͔Β֎Εͨઆ໌Λ͢Δ߹͕͋Γ·͢ • ӏವΈʹ۪ͯ͠ʹॻ͔ͳ͍Ͱ͍ͩ͘͞ • ͜ͷʹϚαΧϦΛ͛ͳ͍Ͱ͍ͩ͘͞ • ΒΕͨΒٽ͖·͢ʢٽ͖·ͤΜʣ
ݟͨͷҧ͍
Perl
Go
※ஊͰ͢
ֶͿ
PerlΛֶͿ • ެࣜͷυΩϡϝϯτ: perldoc perlintro • ఆ൪ͷॻ੶: ॳΊͯͷPerlɺխͳPerlೖ • WEB+DB
PRESS: Perl Hackers Hub • ษڧձ: Perlೖֶࣜ
GoΛֶͿ • ެࣜͷυΩϡϝϯτ: A Tour of Go • ఆ൪ͷॻ੶: ϓϩάϥϛϯάݴޠGo
(ະൃച) • WEB+DB PRESS: Vol.82 ͡ΊͯͷGo • ษڧձ: (ఆظ։࠵͞Ε͍ͯΔͷͳͦ͞͏)
υΩϡϝϯτ
PerlͷυΩϡϝϯτ(ಡΈํ) • perldocίϚϯυ͔ΒͥΜͿಡΊΔ • perldocͷυΩϡϝϯτ: perldoc perldoc • perlͷυΩϡϝϯτ: perldoc
perl (࣍) • metacpan.org perldoc.jp ͳͲͰಡΊΔ
GoͷυΩϡϝϯτ(ಡΈํ) • ݴޠͷυΩϡϝϯτ: https://golang.org/doc/ • ϞδϡʔϧͷυΩϡϝϯτ: godoc.org • godocίϚϯυͰಡΊΔ
PerlͷυΩϡϝϯτ(ܗࣜ) • ׂͱࣗ༝ɺDESCRIPTION/SYNOPSISॏཁ • DESCRIPTION: Ϟδϡʔϧͷઆ໌ • SYNOPSIS: Ұ؏తͳαϯϓϧίʔυ •
PODܗࣜͰॻ͔ΕΔ
GoͷυΩϡϝϯτ(ܗࣜ) • ߏମ/ΠϯλʔϑΣʔε/ؔຖʹॻ͔ΕΔ • publicͳؔͳͲʹυΩϡϝϯτ͕ॻ͔Εͯ ͍ͳ͍ͱܯࠂ͕ग़Δ • ؔ͝ͱʹαϯϓϧίʔυ(Example)͕͋Δ • ίϝϯτͱͯ͠ιʔείʔυʹॻ͔ΕΔ
ڥ
Perlͷڥ • ॲཧܥperlͷΈ • ϚϧνOSαϙʔτ • ࣮ߦڥʹڧ͘ґଘ͢Δ • plenvCatronͳͲͰόʔδϣϯΛݻఆ͢Δ
Goͷڥ • ॲཧܥgoͷΈ • ϚϧνOSαϙʔτ (ΫϩείϯύΠϧ༰қ) • Ϗϧυڥʹڧ͘ґଘ͢Δ • Ϗϧυڥͷόʔδϣϯ͕static
link͞Εͨ όΠφϦ͕ੜ͞ΕΔ
Πϯετʔϧ
Perl ॲཧܥͷΠϯετʔϧ • anyenv install plenv • plenv install -l
# όʔδϣϯ֬ೝ • plenv install 5.22.1 • plenv global 5.22.1 • plenv install-cpanm
Perl ϞδϡʔϧͷΠϯετʔϧ • cpanm App::revealup • ςετ͕ϩʔΧϧͰ࣮ߦ͞ΕΔ • cpanm -n
App::revealup • ςετͳ͠ • cpanm —install-deps . • ΧϨϯτͷґଘϞδϡʔϧΛΠϯετʔϧ
Perl ڥͷצॴ • ࣮ߦڥʹ߹Θͤͯॊೈʹ։ൃڥΛม͑Δ • OSʹΠϯετʔϧ͢ΔͱrootݖݶͰϞδϡʔ ϧΛΠϯετʔϧ͢Δඞཁ͕͋Δ • ύεͷࢦఆՄೳ •
Cartonlocal::libͱซ༻͢Δख͋Δ
Go ॲཧܥͷΠϯετʔϧ • OS X: brew install go • Debian/Ubuntu:
apt-get install golang • binary: https://golang.org/dl/ • /usr/bin ͱ͔ʹී௨ʹΠϯετʔϧͰे
Go ϞδϡʔϧͷΠϯετʔϧ • go get github.com/karupanerura/gostress • ΠϯετʔϧͷΈ • go
get -t github.com/karupanerura/gostress • ςετͭͭ͠Πϯετʔϧ • go get -d . • ґଘϞδϡʔϧΛΠϯετʔϧ
Go ڥͷצॴ • ଟ༷ͳ࣮ߦڥΛߟ͑ͳͯ͘ྑ͍ • ࣮ߦڥͷόʔδϣϯΛؾʹ͠ͳͯ͘ྑ͍ • ඞཁ͕ग़ͨΒgoenvͳͲΛ͏ͱྑ͍ • ϞδϡʔϧGOPATHҎԼʹΠϯετʔϧ
• $HOME/go ͱ͔ʹ͠ͱ͚rootݖݶෆཁ
ΤσΟλ
PerlͷΤσΟλࣄ • emacs • cperl-mode + flycheck + perl-completion •
vim • vim-perl + quickrun + perlomni • ͘Θ͘͠ͳ͍
GoͷΤσΟλࣄ • emacs • go-mode + + flycheck + gocode
• vim • vim-go + vim-godef + gocode • ͘Θ͘͠ͳ͍
_ਓਓਓਓਓਓਓਓ_ > Γ͍ͨ < ʉY^Y^Y^Y^Y^Y^Yʉ
ݴޠ༷
໊લۭؒ
Perl ໊લۭؒ • package = ໊લۭؒ = Ϋϥε • private/publicͱ͍͏֓೦ແ͍
• ໊લۭؒͷϨΩγΧϧείʔϓ࡞ΕΔ • privateͱͯ͠ѻ͍͍ͨαϒϧʔνϯͷ߹ ΞϯμʔείΞΛ໊લͷprefixʹ͢Δͷ͕׳श
Perl ໊લۭؒ • ϑΝΠϧύεͱpackageʹڧ͍͕ؔ͋Δ • Foo::Bar = Foo/Bar.pm • ϩʔυ͢Δͱ͖use·ͨrequireΛ͏
• use Foo::Bar;
Perl ໊લۭؒ • ଞͷύοέʔδʹϑϧωʔϜͰΞΫηε • Foo::Bar::baz() # Foo::Barͷbuz()Λ࣮ߦ • σʔλ(ϦϑΝϨϯε)ͱpackageΛඥ͚Δ͜
ͱ͕Ͱ͖Δ(ޙड़)
Go ໊લۭؒ • package = ύοέʔδ • ໊લͰউखʹΞΫηε੍ޚֻ͕͔Δ • খจࣈͰ࢝·Δͷpackage
• େจࣈͰ࢝·Δͷpublic
Go ໊લۭؒ • ϑΝΠϧύεͱpackageʹڧ͍͕ؔ͋Δ • = Foo/Bar.pm • ଞͷύοέʔδʹϑϧωʔϜͰΞΫηε •
Foo::Bar::baz() # Foo::Barͷbuz()Λ࣮ߦ
ܕ
Perlͱܕ • ಈతܕ͚ݴޠʢίϯςΩετʹΑΔܕ͚ʣ • Scalar/Array/Hash ٴͼͦΕΒͷϦϑΝϨϯε • ଞͷಈతܕ͚ݴޠͱ͘Βͯಛघ • ৄ͘͠ޠΔͱ60͘Β͍Εͯ͠·͏ͷͰ
ࠓճৄ͍͠ݴٴΛ߇͑Δ(GoϝΠϯͳͷͰ)
Perlͷσʔλܕ (Scalar) • ୯ҰͷΛද͢σʔλܕ • /࣮/จࣈྻ/ϦϑΝϨϯε͕ೖΔ • ਓؒʹͱͬͯ $age ͕จࣈྻ͔Ͳ͏͔ؔ৺֎
• ίϯςΩετʹΑܾͬͯΊ͔͔ͯΓ͍ͨ • $age > 20 # ageΛͰѻ͏ίϯςΩετ
Perlͷσʔλܕ (Array/Hash) • ྻ • ॱংΛ࣋ͭσʔλͷू߹ • ϋογϡ • ໊લΛ࣋ͭσʔλͷू߹
Perlͷσʔλ (ϦϑΝϨϯε) • σʔλͷ࣮ମͷࢀর(CͷϙΠϯλʹ͍ۙ) • ϑΝΠϧγεςϜͰ͍͏ͱ͜ΖͷγϣʔτΧο τγϯϘϦοΫϦϯΫ • ϦϑΝϨϯεɾΧϯτGC •
࣮ମͷࢀর͕ͳ͘ͳΔͱ࣮ମΛഁغ
Goͱܕ • ڧ͍੩తܕ͚ݴޠ • มؔ(Ҿ/ฦΓ)ɺσʔλ͕ܕΛ࣋ͭ • มͱσʔλͷܕ͕Ұக͢Δඞཁ͕͋Δ • มͱؔͷܕ͕Ұக͢Δඞཁ͕͋Δ •
ͱʹ͔͘ܕ͕Ұக͢Δඞཁ͕͋Δ
Goͷσʔλܕ (جຊ) • : int, int32, int64 • ࣮: float,
float32, float64 • จࣈྻ: string
Goͷσʔλܕ (array) • ॱংΛ࣋ͬͨσʔλͷू߹ • αΠζ10ͷจࣈྻͷྻ: [10]string • Ұ࡞ͬͨΒ֦ு͢Δ͜ͱͰ͖ͳ͍
Goͷσʔλܕ (slice) • ྻͷҰ෦ΛεϥΠεͨ͠ࢀর • ͔Βͳ͍ਓϙΠϯλͷཧղ͕Γͳ͍ • ҎԼͷεϥΠυͷ39ϖʔδҎ߱Λࢀর͢͠ • http://www.slideshare.net/yasi_life/
go-14075425
Goͷσʔλܕ (map) • ໊લΛ࣋ͬͨσʔλͷू߹ • stringΛΩʔʹͨ͠ͷmap: map[string]int • αΠζؾʹ͠ͳͯ͘Α͠ͳʹͯ͘͠ΕΔ
Goͷσʔλܕ (struct) • ୯ҰͷσʔλΛදݱ͢Δσʔλͷू߹ • Point{X: 1, Y: 1} Έ͍ͨͳϊϦͷΞϨ
• ࣗ༝ʹఆٛͰ͖Δ • C++ͷstruct/classʹ͍ۙ (ޙड़)
Goͷσʔλܕ (pointer) • σʔλͷ࣮ମͷࢀর(CͷϙΠϯλʹ͍ۙ) • PerlͷϦϑΝϨϯεͱಉ͡ • શͯͷσʔλܕϙΠϯλΛ࡞ΕΔ
Goͷܕ (interface) • ಛఆͷؔΛݺͼग़ͤΔܕΛࣔ͢ • duck typingΛࢧԉ͢Δ • ࣗ༝ʹఆٛͰ͖Δ •
Javaͷinterfaceʹ͍͕ۙimplements͢Δඞཁ ͳ͍
ϝϞϦཧ
PerlͷϝϞϦཧ • શ෦ώʔϓྖҬʹ࣋ͭ • ϝϞϦϓʔϧΛ࣋ͬͯಈతʹׂΓͯΔ • શͯͷσʔλGCͰഁغ͞ΕΔ • ϦϑΝϨϯεΧϯτͳͷͰ॥ࢀরʹऑ͍
GoͷϝϞϦཧ • ͚ؔͩͰΘΕΔ: ελοΫྖҬ • ؔ֎ͰΘΕΔ: ώʔϓྖҬ • ώʔϓྖҬͷσʔλGCͰཧ͞ΕΔ •
Mark & Sweep ͳͷͰ॥ࢀরʹڧ͍͕GC͞ ΕΔͷ͕ଟ͍ͱGC͕ॏ͘ͳΔ
ؔ
Perl ؔ • αϒϧʔνϯ͕ସ • ԾҾແ͍ • @_Λదʹೖͯ͠͏ • ෳͷΛฦ͢͜ͱ͕Ͱ͖Δ
Go ؔ • ԾҾͱฦΓͷܕΛ໌ࣔ͢Δඞཁ͕͋Δ • @_ Έ͍ͨͳ൮ͳ͜ͱͰ͖ͳ͍ • ෳͷΛฦ͢͜ͱ͕Ͱ͖Δ •
ผʑͷมͰશͯͷฦΓΛड͚औΔ
ϝιου
Perl ϝιου • package(Ϋϥε)packageʹbless(ͻ͚) ͞ΕͨϦϑΝϨϯε(=Πϯελϯε)͔Βαϒ ϧʔνϯΛϝιουݺͼग़͠Ͱ͖Δ • ϝιουݺͼग़͢͠ΔͱαϒϧʔνϯͷୈҰ ҾʹίϯςΩετͱͯ͠ΫϥεΠϯελϯ ε͕͞ΕΔ
Perl ϝιου • @PackageName::ISA ͕ܧঝύοέʔδ • ݟͨͷ௨Γଟॏܧঝ͕Մೳ • ϝιουݺͼग़͠ͰܧঝΛḷͬͯ͘ΕΔ •
͜ͷ͔Β͘ΓΛblessͱΈ߹ΘͤΔ͜ͱͰ OOP͕ՄೳʹͳΔ
Perl ϝιου (ऄ) • AUTOLOAD • rubyͰ͍͏ͱ͜Ζͷmethod_missing • UNIVERSAL •
rubyͰ͍͏ͱ͜ΖͷObjectΫϥε
Go ϝιου • ࣗͷpackageͷσʔλܕʹϝιουͷΑ ͏ͳͷΛੜ͢͜ͱ͕Ͱ͖Δ • structͦͷϙΠϯλʹੜ͢ͷ͕Ұൠత • ଞͷݴޠͷΫϥεͷΠϯελϯεϝιουͬ Ά͘ͳΔ
Go ϝιου (ऄ) • structͷmixinՄೳ͕࣮ͩଶͨͩͷҕৡ • ܧঝͰͳ͍ͷͰʹϝιουݺͳ͍ • ҕৡͳͷͰcontext object͕ҟͳΔ͜ͱʹ
• ܕใisaͷؔʹͳΒͳ͍
Go ϝιου (ऄ) • ੩తܕ͚ݴޠͳͷͰAUTOLOADͰ͖·ͤΜ • ͪͳΈʹCrystalͩͱmacroͰ࣮ݱ͍ͯ͠Δ • UNIVERSALΈ͍ͨͳͭͳ͍ͷʔʁ •
ܧঝ͕ແ͍ͷͰ͓͍ͩ͘͠͞ͳ
લஔ͖ऴΘΓ
࣮༻తͳ
จࣈྻૢ࡞
Perl ͷจࣈྻૢ࡞ • ਖ਼نදݱ·͡࠷ߴ·͡ศར!! • جຊతʹshell script༝དྷͷจԽͳͷͰ… • tr///ͱs///ͱ͔͋Ε͍͍ͩͨͳΜͱ͔ͳΔ •
ͳΜͱ͔ͳΒͳ͍ͱ͜ΖͰuc/lcͱ͔Λ͏
Go ͷจࣈྻૢ࡞ • ίΞ͕αϙʔτ͢Δػೳ࠷খݶ • stringsύοέʔδͰ͍͍ͩͨͳΜͱ͔ͳΔ • ࠔͬͨΒ·ͣ͜͜ΛௐΑ • ਖ਼نදݱΛؾܰʹ͏ͱՄಡੑΛଛͳ͏
• ਖ਼نදݱͷίʔυ͕Perlͱ͘Βͯ
ܕม
Perl ͷܕม • ίϯςΩετͰܕΛ໌ࣔ͢ΔͷͰσʔλͷܕ ม͕ͦͦෆཁ • ڧ͍ͯݴ͑ίϯςΩετຖʹ҉తʹܕ ม͕ى͍ͬͯ͜Δͷʹ͍͕ۙ͜Εݫີʹ ਖ਼֬ͳදݱͰͳ͍
Go ͷܕม • ܕ͕ݫີͳͷͰܕม͍ͨ͜͠ͱ͕ଟ͍ • strconvύοέʔδͰ͍͍ͩͨͳΜͱ͔ͳΔ • ܕΩϟετ࠷ऴखஈͱ৺ಘΑ • interfaceΛ͏·͘׆༻͢Δͱଟ͘ͷ߹Ͱ
ܕΩϟετͷඞཁੑ͕ͳ͘ͳΔ
Τϥʔॲཧ
Perl ͷΤϥʔॲཧ • ྫ֎ • eval BLOCK ͷதͰdie͢Δ • $@
ʹdieʹͨ͠Scalar͕ೖΔ • ී௨
Go ͷΤϥʔॲཧ • ฦΓͰerrorܕΛฦ͢ͷ͕෩श • result, err := strconv.Atoi(“unko”) •
if err != nil { … } Ͱશ෦ͳΜͱ͔͢Δ • ذॻ͖ΕͯίϯύΠϥॿ͚ͯ͘ΕΜ
Go ͷΤϥʔॲཧ • ະ༻ͷม͕͋ΔͱίϯύΠϧΤϥʔ • ୯ҰͷείʔϓͰ୯ҰͷΤϥʔΛॲཧ͢Δ • ͢ΔͱerrorܕͷΛΘͳ͍ͱίϯύΠϧ Τϥʔ͕ൃੜ͢Δ •
catch࿙Ε͕͋ΔͱίϯύΠϧΤϥʔ͢Δੈք
ߏઃܭ ※ݸਓͷݟղͰ͢
Perl ͷߏઃܭ • খ͍͞ͷखଓ͖ͬΆ͘ΰϦΰϦͬͱॻ͘ • େ͖ͳͷOOPΒ͚ͯ͘͠ॻ͘ • Webͱ͔ͩͱAmon2ͱ͔ͬͯMVCͨ͠Γ • package(Ϋϥε)Ͱ͔ͬ͠ΓείʔϓΛΔ
Go ͷߏઃܭ • interfaceΛத৺ʹઃܭ͢Δ • ৼΔ͍Λड͚͍ͯ͘͠Πϝʔδ • ϙϦϞʔϑΟζϜతͳߟ͑ํ • ελοΫྖҬΛ͏·͘͏Α͏ʹॻ͘ͱߴ
Go ͷߏઃܭ • େ͖ͳͷΛ࡞Δͱ͖෦తʹpackageΛ ͚ΔͱΑͦ͞͏ • ૬ରύεͰύοέʔδΛϩʔυͰ͖ΔͷͰ ͦΕΛ͏·͘׆༻͢Δ • https://github.com/builderscon/octav
ฒྻॲཧ ※ݸਓͷݟղͰ͢
Perl ͷฒྻॲཧ • forkҰ • threadͷΑ͏ͳͷͳ͘ͳ͍͕ΰϛ • ͬͯͳΒͳ͍ • ಉظϑΝΠϧΛͬͨΓPIPEΛͬͨΓ
Perl ͷฒྻॲཧ • ͳΔ͘ϓϩηε͕͍·ΘͤΔΑ͏ʹ͢Δ • ͭ·Γ͍ΘΏΔpre-forkࣜ • ϓϩηεؒͷಉظ͕ඞཁʹͳͬͨΒෛ͚ • Ͳ͏ͯ͠ඞཁͳΒPerlʹ͍ͯͳ͍ͱׂ
ΓΔ͔AnyEventͳͲΛซ༻͢Δ
Go ͷฒྻॲཧ • goroutineͱ͍͏εϨουͷΑ͏ͳͷ͕͋Δ • ʮฒྻͰಈ͍ͯྑ͍ͷʯΛ࡞ΔΠϝʔδ • Go͕͍͍͔Μ͡ʹεέδϡʔϦϯά͢Δ • جຊతʹchannelͰಉظΛऔΔ
Go ͷฒྻॲཧ • ಉظͷίετΑΓฒྻԽͷϝϦοτ͕ߴ͚Ε ͕Μ͕ΜgoroutineΛ࡞Δͱྑͦ͞͏ • ಉظ͕සൟʹඞཁʹͳΔͳΒߟ͑ํΛม͑ ͯΈΔ • ϓϩηεͱҧͬͯؾܰʹࡴͤͳ͍ʹҙ
·ͱΊ
·ͱΊ • GoͱPerlࣅ͍ͯΔʂ • ͱ·Ͱݴ͑ͳ͍͚Ͳͱ͖͍ͬͭ͢ͱࢥ͏ • GoPerlదࡐదॴͰ͍͚ͬͯΔͱΑͦ͞͏ Ͱ͢Ͷ
͓ΘΓ
࣭·ͩ͋ΕͲ͏ͧ