1. ã¯ããã«: Perlãšã¯
ãã®èšäºã§ã¯ãéçºè ã«ãšã£ãŠæçšãªããŒã«ã§ããPerlãšããããã°ã©ãã³ã°èšèªã«çŠç¹ãåœãŠãŸããPerlã¯ãå€æ©èœæ§ãšé«ãæ¡åŒµæ§ãæã€èšèªãšããŠåºãç¥ãããŠããŸãã
1.1. Perlèšèªã®æŠèŠãšç¹åŸŽ
Perlã¯ãLarry Wallã«ãã£ãŠ1987幎代ã«éçºãããé«ã¬ãã«ã®ããã°ã©ãã³ã°èšèªã§ããäž»ã«ããã¹ãåŠçã«å¯ŸããŠåŒ·åãªæ©èœãçºæ®ããŸãããWebéçºãã·ã¹ãã 管çãGUIéçºããã®ä»ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã䜿çšãããŸãã
Perlèšèªã®äž»èŠãªç¹åŸŽã以äžã«ãŸãšããŸãã
– ããã¹ãåŠçèœå: Perlã¯æ£èŠè¡šçŸãåççã«ãµããŒãããŠããã倧éã®ããã¹ãããŒã¿ã容æã«åŠçããããšãå¯èœã§ãã
– CPAN: Perlã¯è±å¯ãªã©ã€ãã©ãªãã¢ãžã¥ãŒã«ãæäŸããComprehensive Perl Archive Network(CPAN)ã«ãã£ãŠãµããŒããããŠããŸããããã«ãããããããåé¡ãå¹ççã«è§£æ±ºããããšãå¯èœã§ãã
– ããŒã¿ããªãã£: Perlã¯å€ãã®ãã©ãããã©ãŒã ã§åäœããã³ãŒãã®ç§»æ€ã容æã§ãã
1.2. Perlã®çšéãšå¯èœæ§
Perlã¯ããŸããŸãªçšéã§å©çšãããŸãããã®äž»ãªäœ¿çšäŸã¯ããã¹ãã®æäœããã¿ãŒã³ãããã³ã°ãã·ã¹ãã 管çã®èªååãWebéçºãªã©ã§ããPerlã¯ããããã®çšéã«å¯ŸããŠåŒ·åãªæ©èœãæäŸããŠããŸãã
Perlã®å¯èœæ§ã¯ãã®çšéã®åºãã«ãããŸããPerlã®è±å¯ãªã©ã€ãã©ãªãšã¢ãžã¥ãŒã«ã«ãããã»ãšãã©ã®æ å ±åŠçã«ããã課é¡ã解決ããããšãã§ããŸãããŸããPerlã䜿ããšãã³ãŒãã®éãå°ãªããèªã¿ãããããã°ã©ã ãçŽ æ©ãæžãããšãã§ãããããå¹ççãªéçºãå¯èœã§ãã
2. ãã¬ãŒã ã¯ãŒã¯ãšã¯
ãœãããŠã§ã¢éçºãã¹ã ãŒãºã«é²ããããã®æ çµã¿ãããããã¬ãŒã ã¯ãŒã¯ã§ãã䌌ããããªæŠå¿µãšããŠãã©ã€ãã©ãªãããããŸããããã®2ã€ã¯äœãéãã®ã§ããããïŒ
2.1. ãã¬ãŒã ã¯ãŒã¯ãšã©ã€ãã©ãªã®éã
éãã¯ãåçŽã«èšããšãå¶åŸ¡ã®æµããã§ããã©ã€ãã©ãªã¯ééããªã䟿å©ã§ãç¹å®ã®æ©èœãæéãªãå®çŸã§ããŸãããå¶åŸ¡ã®æµãã¯éçºè ãã³ã³ãããŒã«ããŸããããããã¬ãŒã ã¯ãŒã¯ã¯ãããç°ãªããã¢ããªã±ãŒã·ã§ã³ã®å€§æ ãããªãã¡å¶åŸ¡ã®æµããŸã§ããã¬ãŒã ã¯ãŒã¯ã®åŽã§èŠå®ãããŠããŸããããã«ããäžè²«æ§ãå®å šæ§ãåå©çšæ§ãæ ä¿ãããŸãã
2.2. ãã¬ãŒã ã¯ãŒã¯å©çšã®ã¡ãªãããšãã¡ãªãã
ã§ã¯ããã¬ãŒã ã¯ãŒã¯ã䜿çšããã¡ãªãããšãã¡ãªããã¯äœãªã®ã§ããããïŒ
ã¡ãªãããšããŠã¯æã倧ããã®ã¯ãéçºã®é床ãšå¹çæ§ã®åäžã§ãããã¬ãŒã ã¯ãŒã¯ã¯åå©çšå¯èœãªã³ãŒãã®ã»ããã§ããããã䜿ãããæ©èœãèšèšãã¿ãŒã³ãæåããçšæãããŠããŸããããã«ãããããã°ã©ããŒã¯æ°ããã¢ããªã±ãŒã·ã§ã³ããŒãããã³ãŒãã£ã³ã°ããå¿ èŠããªããªããŸããããã«ããã¬ãŒã ã¯ãŒã¯ã«ã¯å®çžŸããããå€ãã®å Žåãå ç¢æ§ãã»ãã¥ãªãã£ãæ§èœã«åªããŠããŸãã
ãã ãããã¡ãªãããç¡èŠã§ããŸãããåŠç¿ã³ã¹ãã¯ç¢ºãã«ååšããŸãããã¬ãŒã ã¯ãŒã¯ã¯ç¬èªã®ã«ãŒã«ãèŠåãæã£ãŠããããããç解ããé©ãããšãå¿ èŠã§ãããããŠããã¬ãŒã ã¯ãŒã¯ããšã«ãã®ç¹æ§ãç°ãªããããäžã€ããã¹ã¿ãŒããããšãä»ã®ãã¬ãŒã ã¯ãŒã¯ã§ãå©çšã§ãããšã¯éããªãã®ã§ãã
ããããèžãŸããèªèº«ã®ãããžã§ã¯ãã«æé©ãªãã¬ãŒã ã¯ãŒã¯ãéžæããããšãéèŠã§ãã
3. Perlãã¬ãŒã ã¯ãŒã¯ã®çŽ¹ä»
ããã§ã¯ãPerlã§äººæ°ã®ããäž»ãªãã¬ãŒã ã¯ãŒã¯ã§ããMojoliciousãCatalystããããŠDancerã玹ä»ããŸãããããããæã€ç¹åŸŽãç解ããããšã§ãéçºãããžã§ã¯ãã«æãé©ãããã¬ãŒã ã¯ãŒã¯ãéžã¶äžå©ãšãªãã§ãããã
3.1. Mojolicious
Mojoliciousã¯ãPerlãã¬ãŒã ã¯ãŒã¯ã®äžã§ãæ°ããäžä»£ã®ãã®ã§ãéåæåŠçããŠã§ããœã±ããã®ãããªçŸä»£çãªWebéçºæ©èœã匷åã«ãµããŒããããŠããŸãããŸããèšå®ãæå°éã§æžããšããç¹åŸŽããããŸãããã®ãããè€éãªèšå®ã«èŠããå¿ èŠããªããããæ軜ã«ãããžã§ã¯ããå§ããããšãã§ããŸãã
3.2. Catalyst
Catalystã¯ãPerlãã¬ãŒã ã¯ãŒã¯ã®äžã§ãæãç¥å床ãé«ããã®ã®ã²ãšã€ã§ããMVCïŒModel-View-ControllerïŒããŒã¹ã®èšèšãšãªã£ãŠããã倧èŠæš¡ãªãããžã§ã¯ãã«åããŠããŸãããŸããè±å¯ãªãã©ã°ã€ã³ãšæŽ»çºãªã³ãã¥ããã£ãååšãããããã©ããªåé¡ã«ã察å¿å¯èœã§ãã
3.3. Dancer
Dancerã¯ãã®åã®éãã軜éã§ãšleganceãªãã¬ãŒã ã¯ãŒã¯ã§ããèšå®ãã³ãŒãã®éãå°ãªããã·ã³ãã«ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«é©ããŠããŸãããã®ããŒã§ãæ軜ã«å§ãããããããèªèº«ã®ã¢ã€ãã¢ãçŽ æ©ã圢ã«ããããšãå¯èœã§ãã
4. åãã¬ãŒã ã¯ãŒã¯ã®ç¹åŸŽãšäœ¿ãæ¹
ããã§ã¯ãPerlã®äººæ°ãã¬ãŒã ã¯ãŒã¯ãMojoliciousãCatalystããããŠDancerãããã¯ã¢ããããããããã®ç¹åŸŽãšåºæ¬çãªäœ¿ãæ¹ãã玹ä»ããŸãã
4.1. Mojoliciousã®ç¹åŸŽãšç°¡åãªäœ¿ãæ¹
Mojoliciousã¯ããã¹ãŠã®äŸåæ§ãå å ãã”å šæ©èœæ茔ã®ã¢ãã³ãªPerlãã¬ãŒã ã¯ãŒã¯ã§ãã絶ããé²åãç¶ããæ°ããWebæè¡ã®æšæºãçŽ æ©ãåãå ¥ããŠããããšãç¹åŸŽçã§ãã
ã€ã³ã¹ããŒã«ã¯CPANãéããŠå®è¡ã§ãã以äžã®ã³ãã³ãäžã€ã§å¯èœã§ãã
sudo cpan Mojolicious
次ã«ã以äžã®ãµã³ãã«ã³ãŒãã¯ãããã ãªMojoliciousã¢ããªã±ãŒã·ã§ã³ã瀺ããŠããŸãã
#!/usr/bin/env perl use Mojolicious::Lite; get '/' => {text => 'Hello, Mojolicious!'}; app->start;
ãã®ã³ãŒããä¿åã,ã./myapp.pl daemonãã§å®è¡ããã ãã§,WebããŒãžã«ã¢ã¯ã»ã¹ãããš”Hello, Mojolicious!”ãšè¡šç€ºããŸãã
4.2. Catalystã®ç¹åŸŽãšç°¡åãªäœ¿ãæ¹
Catalystã¯ãè±å¯ãªãã©ã°ã€ã³ãæããã¯ãã«ãªPerlãã¬ãŒã ã¯ãŒã¯ã§ã倧èŠæš¡ãªWebãããžã§ã¯ãã«ããé©çšãããŠããŸãã
äžèšã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ãè¡ããŸãã
sudo cpan Catalyts::Runtime
以äžã¯ãCatalystã§ã®åºæ¬çãªWebã¢ããªã±ãŒã·ã§ã³ã®äœæäŸã§ãã
#!/usr/bin/env perl use Catalyst::Runtime; use Path::Class 'dir'; use MyApp; MyApp->apply_default_middlewares( MyApp->psgi_app({ home => dir('/home/myapp'), }) );
ãã®ãã¡ã€ã«ãä¿ååŸããmyapp_server.plããå®è¡ããŸããããããããšã§ãWebããŒãžã«ã¢ã¯ã»ã¹ãã§ããããã«ãªããŸãã
4.3. Dancerã®ç¹åŸŽãšç°¡åãªäœ¿ãæ¹
Dancerã¯ãã·ã³ãã«ããšäœ¿ããããã§ç¥ãããWebã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ããå°ïœäžèŠæš¡ã®ãããžã§ã¯ãã«ããããã§ãã
以äžã®ã³ãã³ãã䜿çšããŠã€ã³ã¹ããŒã«ããŸãã
sudo cpan Dancer
ç°¡åãªDancerã¢ããªã±ãŒã·ã§ã³ã®äœæäŸã瀺ããŸãã
#!/usr/bin/env perl use Dancer; get '/' => sub { "Hello, Dancer!"; }; dance;
ãã®ãã¡ã€ã«ãä¿ååŸããperl myapp.plããå®è¡ããŸããããã«ãããWebããŒãžã«ã¢ã¯ã»ã¹ãããšã”Hello, Dancer!”ãšè¡šç€ºãããŸãã
以äžããMojoliciousãCatalystãDancerã®åºæ¬çãªç¹åŸŽãšç°¡åãªäœ¿ãæ¹ã«ãªããŸããèªèº«ã®ãããžã§ã¯ãã«åãããŠé©åãªãã¬ãŒã ã¯ãŒã¯ãéžæããŸãããã
5. ãã¬ãŒã ã¯ãŒã¯ã®éžææ¹æ³
ãã¬ãŒã ã¯ãŒã¯ã®éžæã¯ããœãããŠã§ã¢éçºãé²ããäžã§ã®äžã€ã®é倧ãªæ±ºæãšãªããŸããéžæãããã¬ãŒã ã¯ãŒã¯ã¯éçºé床ãã³ãŒãã®å¯èªæ§ãå°æ¥ã®ã¹ã±ãŒã©ããªãã£ãªã©ããããžã§ã¯ãå šäœã«å€§ããªåœ±é¿ãåãŒããŸãã
5.1. ãããžã§ã¯ããšãã¬ãŒã ã¯ãŒã¯ã®çžæ§
ãŸã第äžã«èæ ®ãã¹ãã¯ãèªåã®ãããžã§ã¯ããšãã¬ãŒã ã¯ãŒã¯ã®çžæ§ã§ãããã¬ãŒã ã¯ãŒã¯ã¯ããŒã«ã§ãããããŒã«ãéžã¶éã¯ãã®çšéãæåªå ã«èããã¹ãã§ãã ããšãã°ããããã¬ãŒã ã¯ãŒã¯ãéåžžã«å€æ©èœã§ããããšã¯é åçã«æããŸããããã®å šãŠã®æ©èœãå¿ èŠã ãšã¯éããªãã§ããããæã«ã¯ãã·ã³ãã«ãªæ©èœããæäŸããªããã¬ãŒã ã¯ãŒã¯ã®æ¹ããéçºãè¡ããããå ŽåããããŸãã
ãŸããèæ ®ãã¹ãã¯ãã¬ãŒã ã¯ãŒã¯ã®éçºã¹ã¿ã€ã«ã§ããäžéšã®ãã¬ãŒã ã¯ãŒã¯ã¯é«åºŠãªå¶åŸ¡ãå¯èœã«ããäžæ¹ã§ãã³ãŒãã®èšè¿°ãè€éã«ãªããã¡ã§ããäžæ¹ãä»ã®ãã¬ãŒã ã¯ãŒã¯ã¯ã·ã³ãã«ãªèšå®ãšèŠçŽã«ãã£ãŠã¹ã ãŒãºãªéçºãå¯èœã«ããŸãããæè»æ§ãç ç²ã«ãªãããšããããŸããã©ã¡ããåªããŠããããã§ã¯ãªãããããžã§ã¯ãã®èŠä»¶ã«ãããŸãã
5.2. ã³ãã¥ããã£ãšããã¥ã¡ã³ããŒã·ã§ã³
次ã«ããã¬ãŒã ã¯ãŒã¯ã®éžæã®éã«èæ ®ãã¹ãã¯ããã®ãã¬ãŒã ã¯ãŒã¯ãæã€ã³ãã¥ããã£ãšããã¥ã¡ã³ããŒã·ã§ã³ã®ç¶æ³ã§ããFluentãªããã¥ã¡ã³ããŒã·ã§ã³ãæã£ãŠãããã¬ãŒã ã¯ãŒã¯ã¯ãåŠç¿ã³ã¹ããæããããã ãã§ãªããåé¡ãçºçããéã«ã察åŠãããããšããå©ç¹ããããŸãã
ãŸãã掻çºãªã³ãã¥ããã£ãæã€ãã¬ãŒã ã¯ãŒã¯ã¯ãæ°ããªã¢ããããŒããå®æçã«æäŸãããããŸããŸãªè³ªåãåé¡ãè¿ éã«è§£æ¶ãããŸããããã«ããããã¬ãŒã ã¯ãŒã¯ã®é·æçãªéçšãå®å®ãããã¬ãŒã ã¯ãŒã¯ã«èµ·å ããåé¡ããéçºãããžã§ã¯ããå®ãããšãã§ããŸãã
ãã¬ãŒã ã¯ãŒã¯éžã³ãè¡ãéã¯ããããã®ãã€ã³ãã«åºã¥ããŠæ éã«æ å ±ãåéããèªåã®ãããžã§ã¯ãã«æãé©ãããã®ãéžã¶ããã«ããŸãããã
6. Perlãã¬ãŒã ã¯ãŒã¯ã䜿ã£ãéçºã®æµã
ããŠããããŸã§Perlãã¬ãŒã ã¯ãŒã¯ã®çŽ¹ä»ãšãã®ç¹åŸŽã«ã€ããŠè©³ãã解説ããŠããŸãããããã§ã¯å ·äœçãªéçºã®æµããæãäžããŠãããŸããããå®éã«Perlãã¬ãŒã ã¯ãŒã¯ã䜿ã£ãŠã·ã¹ãã ãéçºããéã®äžé£ã®æµããšããŠã¯ãç°å¢æ§ç¯ãããå§ãŸãããç°¡åãªã¢ããªã±ãŒã·ã§ã³ã®äœæãã«ç§»è¡ããŸãã
6.1. ç°å¢æ§ç¯
ãŸãæåã«ç°å¢æ§ç¯ãå¿ èŠã§ããç°å¢æ§ç¯ãšã¯ãéçºãå®è¡ãè¡ãäžã§å¿ èŠãªãœãããŠã§ã¢ãã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«ã®ããšãæããŸããä»åŸäœå¹Žã䜿ãç¶ããå¯èœæ§ã®ããç°å¢ãæºåããã®ã§ãæ éã«é²ããã¹ãã§ãã
# Perlæ¬äœã®ã€ã³ã¹ããŒã« sudo apt-get install -y perl # Mojoliciousãã¬ãŒã ã¯ãŒã¯ã®ã€ã³ã¹ããŒã« sudo cpan Mojolicious
äžèšã®è¡ãã¿ãŒããã«ã«å ¥åããã°ãMojoliciousãã¬ãŒã ã¯ãŒã¯ã®å©çšãå¯èœãšãªããŸãã
6.2. ç°¡åãªã¢ããªã±ãŒã·ã§ã³ã®äœæ
次ã«ç°¡åãªã¢ããªã±ãŒã·ã§ã³ã®äœæã«ç§»ããŸããããã§ã¯MojoliciousãçšããŠããHello, world!ããšè¡šç€ºãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãå¶äœããŠã¿ãŸãããã
# MyApp.pm package MyApp; use Mojo::Base 'Mojolicious'; sub startup { my $self = shift; $self->routes->get('/' => sub { my $c = shift; $c->render(template => 'index'); }); } 1;
以äžãç°¡åãªMojoliciousã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã§ããããã«ããã«ãŒãURL(‘/’)ã«ã¢ã¯ã»ã¹ããéã«ã’index’ãšãããã³ãã¬ãŒããã¬ã³ããªã³ã°ããŸããããã衚瀺ãããããã«ã¯ä»¥äžã®ãããªã³ãã³ããã¿ãŒããã«ã«æã¡ãŸãã
# ã¢ããªã±ãŒã·ã§ã³ã®èµ·å morbo script/my_app
ããã«ããhttp://localhost:3000ã«ã¢ã¯ã»ã¹ããããšã§ãHello, world!ããšè¡šç€ºããããŠã§ãããŒãžãå®æããŸããPerlãã¬ãŒã ã¯ãŒã¯ã«ããéçºã®åºæ¬çãªæµãã¯ä»¥äžãšãªããŸãã
7. Perlãã¬ãŒã ã¯ãŒã¯ã®å©çšäºäŸ
ããã§ã¯ãPerlãã¬ãŒã ã¯ãŒã¯ãã©ã®ããã«å©çšãããŠããã®ããå ·äœçãªäºäŸãéããŠã芧ããã ããŸãããããã¬ãŒã ã¯ãŒã¯ã¯ãè€éãªã¢ããªã±ãŒã·ã§ã³éçºãå¹çåããããã®åŒ·åãªããŒã«ã§ãããã®å¹æã¯ã倧èŠæš¡ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ãããŒã¿è§£æããŒã«ãªã©ãããŸããŸãªã·ãŒã³ã§èŠãããšãã§ããŸãã
7.1. 倧èŠæš¡ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³
Perlãã¬ãŒã ã¯ãŒã¯ã®äžã€ã§ããCatalystã¯ã倧èŠæš¡ãªãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºã«åºãå©çšãããŠããŸãããã®è±å¯ãªãã©ã°ã€ã³ãšå æ¬çãªæ©èœã«ãããé«åºŠãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãAPIãå¹ççã«æ§ç¯ããããšãå¯èœã§ãã
use Catalyst 'Example';
ãã®ããã«ãCatalystã¯Perlã®ã¢ãžã¥ãŒã«ãåå空éãšããŠå©çšããããšã«ãããã¢ããªã±ãŒã·ã§ã³ã®åéšåãæŽçããããããŠããŸããããã«ããã倧èŠæš¡ãããžã§ã¯ãã§ãã³ãŒããç ©éã«ãªãããã¡ã³ããã³ã¹ããããç¶æ ãä¿ã€ããšãã§ããŸãã
7.2. ããŒã¿è§£æããŒã«
Dancerãšããå¥ã®Perlãã¬ãŒã ã¯ãŒã¯ã¯ããã®ã·ã³ãã«ããšç°¡ææ§ãããããŒã¿åŠçã解æããŒã«ã®äœæã«å¥œé©ã§ãã以äžã¯ãDancerã䜿ã£ãã·ã³ãã«ãªWebã¢ããªã±ãŒã·ã§ã³ã®ã³ãŒãã®äžéšã§ãã
use Dancer ':syntax'; get '/hello/:name' => sub { return "Hello ".params->{name}; }; start;
ãã®ãããªçãã³ãŒãã§ããååããã©ã¡ãŒã¿ãšããŠåãåãããHello ååããè¿ãåçŽãªWebã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããŸããPerlãã¬ãŒã ã¯ãŒã¯ã¯ãã®ããã«ãå°èŠæš¡ãã倧èŠæš¡ãŸã§æ§ã ãªãããžã§ã¯ãã«ãããŠãéçºã®å¹çåãšå質åäžã«å¯äžããŸãã
8. ãŸãšã: Perlãã¬ãŒã ã¯ãŒã¯ã®å¹æçãªå©çš
ãããŸã§Perlã®ãã¬ãŒã ã¯ãŒã¯ã«ã€ããŠåŠã³ããã¬ãŒã ã¯ãŒã¯å éšã®ä»çµã¿ãšãã®äœ¿ãæ¹ã解説ããŠããŸããããã®ç¥èã掻ããã°ãããªããå¹ççãã€è¿ éã«Perlã§ã®ãããžã§ã¯ããæšé²ããããšãå¯èœã«ãªããŸãã
8.1. ãã¬ãŒã ã¯ãŒã¯éžæã®ãã€ã³ãå確èª
Perlãã¬ãŒã ã¯ãŒã¯ãéžã¶éã«ã¯ã以äžã®ãã€ã³ããå確èªããŠãã ããããŸãæ¢åã®ãããžã§ã¯ãã®èŠä»¶ãšã®çžæ§ãè©äŸ¡ããŸããåãã¬ãŒã ã¯ãŒã¯ã¯ããããç¹è²ãããããŠã§ãéçºã ãã§ãªããããŒã¿è§£æãã·ã¹ãã ã¹ã¯ãªãããªã©æ§ã ãªçšéã«å¿ããæ©èœãåããŠããŸããéžã¶ãã¬ãŒã ã¯ãŒã¯ããããžã§ã¯ãã®ããŒãºãæºããããšãæãéèŠã§ãã
ãŸãããã¬ãŒã ã¯ãŒã¯ã®çæ ç³»ã¯ãéžã¶ããã®éèŠãªèŠçŽ ã§ããã³ãã¥ããã£ã®æŽ»åæ§ãããã¥ã¡ã³ããŒã·ã§ã³ã®å å®åºŠãæ¯æŽãªãœãŒã¹ã®å€ããªã©ã¯ãã¬ãŒã ã¯ãŒã¯ã䜿ããããããŸããã©ããªã«åªããæ©èœãæã€ãã¬ãŒã ã¯ãŒã¯ã§ããããã掻ããããã«å¿ èŠãªæ å ±ããµããŒããäžè¶³ããŠãããšæŽ»çšã§ããŸããã
8.2. Perlãã¬ãŒã ã¯ãŒã¯å©çšã®åŸæŒã
Perlãã¬ãŒã ã¯ãŒã¯ã®å©çšã¯ãéçºå¹çã®åäžãã³ãŒãã®å質ä¿èšŒã«ç¹ãããŸãã ãŸããPerlãã¬ãŒã ã¯ãŒã¯ã¯è±å¯ãªã©ã€ãã©ãªãšã¢ãžã¥ãŒã«ãæã£ãŠããããã®å šãŠãããªãã®å¯èœæ§ãåºããŸãããã¬ãŒã ã¯ãŒã¯ã¯éçºã®æéãçãã€ã€ãããè¯ããœãããŠã§ã¢ãäœãããã®ç°å¢ãæäŸããŸãã
ãã®èšäºã§èª¬æããåºæ¬çãªç¥èãèžãŸããŠãæé©ãªPerlãã¬ãŒã ã¯ãŒã¯ãéžã³ãPerlã®ç䟡ãåŒãåºããŠã¿ãŠãã ããã