1. Perlããã°ã©ãã³ã°èšèªã®çŽ¹ä»
ããã°ã©ãã³ã°èšèªãšã¯ãã³ã³ãã¥ãŒã¿ã«å¯ŸããŠåœä»€ãäžããããã®ããŒã«ã§ãããã®äžã§ãPerlã¯ããã®å€æ§æ§ãšåŒ·åãªæ©èœã§ç¥ãããŠããŸãã
1.1. Perlã®ç¹åŸŽãšæŽå²
Perlã¯ã1987幎ã«Larry Wallã«ãã£ãŠéçºãããŸããã圌ã¯ããã¹ãåŠçã®äœæ¥ãå¹çåããããã®ããŒã«ãšããŠPerlãèšèšããŸãããPerlã¯ãå®çšæ§ãšäŸ¿å©ããéèŠããŠãããæ£èŠè¡šçŸã®åŒ·åãªãµããŒããããã¹ãæäœã«é¢ããè±å¯ãªæ©èœãæã£ãŠããŸãããŸããPerlã¯ãªãŒãã³ãœãŒã¹ã§ããã誰ã§ãç¡æã§å©çšããããšãã§ããŸãã
1.2. Perlã®äž»ãªçšéãšåŒ·ã¿
Perlã¯ããã®æè»æ§ããå€ãã®åéã§å©çšãããŠããŸããç¹ã«ãããã¹ãåŠçãã·ã¹ãã 管çããŠã§ãéçºããããã¯ãŒãã³ã°ããã¹ãèªååãªã©ã§ãã®åãçºæ®ããŸããPerlã®ã³ãã¥ããã£ã¯éåžžã«æŽ»çºã§ãå€ãã®ã¢ãžã¥ãŒã«ãã©ã€ãã©ãªãå ±æãããŠããŸããããã«ãããPerléçºè ã¯æ¢åã®ã³ãŒããå©çšããŠãè¿ éãã€å¹ççã«ããã°ã©ã ãéçºããããšãã§ããŸãã
ãŸããPerlã¯ã¯ãã¹ãã©ãããã©ãŒã ã§ãããWindows, Mac, Linuxãªã©ãå€ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§å©çšå¯èœã§ããããã«ãããç°ãªãã·ã¹ãã éã§ã®ã³ãŒãã®ç§»æ€ã容æã«ãªããŸãã
2. ããã¹ãåŠçãšPerl
ããã¹ãåŠçã¯ãPerlãæãåŸæãšããåéã®äžã€ã§ãããã®çç±ã®äžã€ã¯ãPerlãæäŸããæ£èŠè¡šçŸãšãã匷åãªããŒã«ã«ãããŸããæ£èŠè¡šçŸãçšããããšã§ãããã¹ãããŒã¿ã®æ€çŽ¢ã眮æãæœåºãé«åºŠã«è¡ãããšãã§ããŸãã
2.1. æ£èŠè¡šçŸãšãã®æŽ»çšäŸ
æ£èŠè¡šçŸã¯ãæååã®ãã¿ãŒã³ãå®çŸ©ããããã®è¡šçŸæ¹æ³ã§ããPerlã§ã¯ã/ãã¿ãŒã³/
ãšãã圢ã§æ£èŠè¡šçŸãè¡šçŸããŸããäŸãã°ã/Perl/
ãšããæ£èŠè¡šçŸã¯ãããã¹ãäžã®ãPerlããšããæååãæ€çŽ¢ããŸãããŸããs/Perl/PERL/
ãšããã³ãŒãã¯ããPerlãããPERLãã«çœ®æããŸãã
2.2. ãã¡ã€ã«æäœãšæåååŠç
Perlã§ã¯ãopen
é¢æ°ãçšããŠãã¡ã€ã«ãéãã<
ãªãã¬ãŒã¿ã§å
容ãèªã¿èŸŒã¿ãŸããäŸãã°ãopen my $file, '<', 'example.txt';
ãšããã³ãŒãã¯ã'example.txt'ãšãããã¡ã€ã«ãèªã¿èŸŒãããã®ã³ãŒãã§ããããã¹ããã¡ã€ã«ã®åè¡ãåŠçããéã«ã¯ãæ£èŠè¡šçŸãå©çšããŠãç¹å®ã®ãã¿ãŒã³ãæã€è¡ãæœåºããããããã¹ããå å·¥ãããããããšãã§ããŸãã
2.3. ãã¿ãŒã³ãããã³ã°ãšããŒã¿æœåº
æ£èŠè¡šçŸãå©çšãããã¿ãŒã³ãããã³ã°ã¯ããã°ãã¡ã€ã«ã®è§£æãããŒã¿æœåºã«éåžžã«äŸ¿å©ã§ããäŸãã°ããã°ãã¡ã€ã«ãããšã©ãŒæ å ±ãæœåºããããCSVãã¡ã€ã«ããç¹å®ã®ããŒã¿ãæœåºãããããéã«ãæ£èŠè¡šçŸãå©çšããŠãã¿ãŒã³ãå®çŸ©ããå¿ èŠãªæ å ±ã ããå¹çããåãåºãããšãã§ããŸãã
3. ã·ã¹ãã 管çã«ãããPerlã®å©çš
ã·ã¹ãã 管çã¯ãPerlãåºãå©çšãããŠããé åã®äžã€ã§ããPerlã䜿çšããŠããã¡ã€ã«ããã£ã¬ã¯ããªã®æäœãããã»ã¹ã®ç®¡çããããŠã·ã¹ãã ã¿ã¹ã¯ã®èªååãè¡ãããšãã§ããŸãã
3.1. ãã¡ã€ã«ãšãã£ã¬ã¯ããªã®æäœ
Perlã§ã¯ãopen
ãclose
ãread
ãwrite
ãªã©ã®é¢æ°ã䜿çšããŠããã¡ã€ã«ãæäœããããšãã§ããŸãããŸããmkdir
ãrmdir
ã䜿çšããŠããã£ã¬ã¯ããªãäœæãŸãã¯åé€ããããšãå¯èœã§ãããããã®é¢æ°ãå©çšããŠããã¡ã€ã«ããã£ã¬ã¯ããªã®ã³ããŒã移åãååã®å€æŽãªã©ãå€ãã®ãã¡ã€ã«ã·ã¹ãã ã¿ã¹ã¯ãèªååããããšãã§ããŸãã
3.2. ããã»ã¹ç®¡çã®èªåå
Perlã䜿çšããŠãã·ã¹ãã ããã»ã¹ã管çããèªååããããšãå¯èœã§ããäŸãã°ãsystem
é¢æ°ã䜿çšããŠãå€éšã³ãã³ããå®è¡ããããfork
é¢æ°ã䜿çšããŠãæ°ããããã»ã¹ãçæãããããããšãã§ããŸããããã«ãããããããžã§ãã®èªåå®è¡ããã·ã¹ãã ããã»ã¹ã®ç£èŠãªã©ãå€ãã®ã·ã¹ãã 管çã¿ã¹ã¯ãå¹ççã«è¡ãããšãã§ããŸãã
3.3. ã·ã¹ãã ã¿ã¹ã¯ã®ã¹ã¯ãªããã£ã³ã°
Perlã¯ãã·ã§ã«ã¹ã¯ãªããã«ä»£ãã匷åãªã¹ã¯ãªããã£ã³ã°èšèªãšããŠãå©çšãããŠããŸããPerlã®è±å¯ãªæååæäœæ©èœãæ£èŠè¡šçŸããããŠCPANïŒComprehensive Perl Archive NetworkïŒããæäŸãããå€ãã®ã¢ãžã¥ãŒã«ãå©çšããããšã§ãã·ã¹ãã ã¿ã¹ã¯ã®ã¹ã¯ãªããã£ã³ã°ãå¹ççãã€æè»ã«è¡ãããšãã§ããŸãã
4. PerlãçšãããŠã§ãéçº
ãŠã§ãéçºã¯ãPerlãåºãå©çšãããŠããé åã®äžã€ã§ããPerlã䜿çšããŠãåçãªãŠã§ãããŒãžããŠã§ãã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããŸãã
4.1. CGIãšãŠã§ãã¢ããªã±ãŒã·ã§ã³
CGIïŒCommon Gateway InterfaceïŒã¯ããŠã§ããµãŒããšå€éšããã°ã©ã ãšãã€ãªãã€ã³ã¿ãŒãã§ãŒã¹ã®äžã€ã§ããPerlã¯CGIãçšããŠããŠã§ããã©ãŒã ããããŒã¿ãåãåãããŠã§ãããŒãžãåçã«çæããããšãã§ããŸããããã«ããããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãæã€ãŠã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºãå¯èœãšãªããŸãã
4.2. ãã©ãŒã åŠçãšããŒã¿ããªããŒã·ã§ã³
ãŠã§ããã©ãŒã ããéä¿¡ãããããŒã¿ã¯ãPerlã䜿çšããŠåŠçãããŸããPerlã¯ããã©ãŒã ããéä¿¡ãããããŒã¿ãåãåããããªããŒã·ã§ã³ïŒããŒã¿ã®æ£åœæ§ã®ãã§ãã¯ïŒãè¡ããé©åãªã¬ã¹ãã³ã¹ãçæããèœåãæã£ãŠããŸãããŸããPerlã®æ£èŠè¡šçŸãå©çšããããšã§ãããŒã¿ããªããŒã·ã§ã³ãå¹ççã«è¡ãããšãã§ããŸãã
4.3. ããŒã¿ããŒã¹ãšã®é£æº
Perlã¯ãDBIïŒDatabase InterfaceïŒã¢ãžã¥ãŒã«ãéããŠãæ§ã ãªããŒã¿ããŒã¹ã·ã¹ãã ãšé£æºããããšãã§ããŸããããã«ããããŠã§ãã¢ããªã±ãŒã·ã§ã³ã§ããŒã¿ããŒã¹ããããŒã¿ãååŸããããããŒã¿ããŒã¹ã«ããŒã¿ãä¿åãããããããšãã§ããŸããPerlãšDBIã䜿çšããããšã§ããŠã§ãã¢ããªã±ãŒã·ã§ã³ãšããŒã¿ããŒã¹ãšã®éã§å¹ççãªããŒã¿åŠçãå®çŸããããšãã§ããŸãã
5. ãããã¯ãŒãã³ã°ãšPerl
ãããã¯ãŒãã³ã°ã¯ãPerlã®åŒ·åãªæ©èœã®äžã€ã§ãããPerlãçšããŠæ§ã ãªãããã¯ãŒã¯ã¿ã¹ã¯ãå¹ççã«å®è¡ããããšãã§ããŸãã
5.1. ãœã±ããéä¿¡ã®åºæ¬
ãœã±ããéä¿¡ã¯ããããã¯ãŒã¯äžã®ç°ãªãã·ã¹ãã éã§ããŒã¿ã亀æããåºæ¬çãªã¡ã«ããºã ã§ããPerlã§ã¯ãSocket
ã¢ãžã¥ãŒã«ã䜿çšããŠããœã±ããéä¿¡ãè¡ããŸãããã®ã¢ãžã¥ãŒã«ã䜿çšããããšã§ãPerlããã°ã©ã ã¯ãããã¯ãŒã¯ãµãŒãã¹ãæäŸãããããªã¢ãŒãã®ãµãŒãã¹ãšéä¿¡ãããããããšãã§ããŸãã
5.2. ãããã³ã«ãšããŒã¿éåä¿¡
ãããã¯ãŒã¯ãããã³ã«ã¯ãã³ã³ãã¥ãŒã¿éã§ããŒã¿ããããšãããéã®ã«ãŒã«ãå®ããŸããPerlã§ã¯ãTCPãUDPãªã©ã®ãããã³ã«ãçšããŠãããŒã¿ã®éåä¿¡ãè¡ãããšãã§ããŸãããŸããsend
ãrecv
é¢æ°ã䜿çšããŠãããŒã¿ãéåä¿¡ããããšãã§ããŸãã
5.3. ãããã¯ãŒã¯ããã°ã©ãã³ã°ã®å®äŸ
Perlãçšãããããã¯ãŒã¯ããã°ã©ãã³ã°ã®äžäŸãšããŠããã£ãããµãŒããŒã®äœæããããŸããPerlã®ãœã±ããéä¿¡æ©èœã䜿çšããŠãã¯ã©ã€ã¢ã³ããšãµãŒããŒããªã¢ã«ã¿ã€ã ã§ã¡ãã»ãŒãžã亀æã§ããã¢ããªã±ãŒã·ã§ã³ãäœæããããšãã§ããŸãããŸããPerlã䜿çšããŠãFTPã¯ã©ã€ã¢ã³ããSMTPã¯ã©ã€ã¢ã³ããªã©ãæ§ã ãªãããã¯ãŒã¯ã¢ããªã±ãŒã·ã§ã³ãéçºããããšãã§ããŸãã
6. ãã¹ãèªååãšPerl
ãœãããŠã§ã¢éçºã«ããããã¹ãèªååã¯ãå質ã確ä¿ããéçºãµã€ã¯ã«ãã¹ã ãŒãºã«é²ããäžã§æ¥µããŠéèŠã§ããPerlã¯ããã®è±å¯ãªãã¹ãã¢ãžã¥ãŒã«ãšããŒã«ã«ããããã¹ãèªååã®é åã§åºãå©çšãããŠããŸãã
6.1. ãã¹ãã¹ã¯ãªããã®äœæ
Perlã«ã¯ãTest::SimpleãTest::Moreãªã©ã®ã¢ãžã¥ãŒã«ãããããããã䜿çšããŠãã¹ãã¹ã¯ãªãããç°¡åã«äœæããããšãã§ããŸãããã¹ãã¹ã¯ãªããã¯ãããã°ã©ã ãæåŸ éãã®åäœãããããèªåçã«ãã§ãã¯ãããã®çµæãå ±åããŸããããã«ãããã³ãŒãã®å€æŽãè¿œå ãããã°ã©ã ã«æªåœ±é¿ãäžããŠããªãããè¿ éã«ç¢ºèªããããšãã§ããŸãã
6.2. èªåãã¹ãã®å®è¡ãšçµæåæ
ãã¹ãã¹ã¯ãªãããäœæãããããããèªåçã«å®è¡ããçµæãåæããããšãéèŠã§ããPerlã§ã¯ãprove
ã³ãã³ãã䜿çšããŠãã¹ãã¹ã¯ãªãããå®è¡ãããã®çµæãåæããããšãã§ããŸãããŸããTest::Harnessã¢ãžã¥ãŒã«ã䜿çšããŠããã¹ãçµæã詳现ã«åæããå ±åããããšãå¯èœã§ãã
6.3. å質ä¿èšŒãšãã°ãã©ããã³ã°
ãã¹ãèªååã¯ããœãããŠã§ã¢ã®å質ä¿èšŒã«ãããŠäžå¿çãªåœ¹å²ãæãããŸããPerlã䜿çšããŠããã°ãã©ããã³ã°ã·ã¹ãã ãçµã¿èŸŒãããšã§ãçºèŠããããã°ãå¹ççã«ç®¡çããä¿®æ£ã远跡ããããšãã§ããŸããããã«ãããéçºããŒã ã¯ãœãããŠã§ã¢ã®å質ãäžè²«ããŠé«ãä¿ã€ããšãã§ããŸãã
7. Perlããã°ã©ãã³ã°ã®åŠç¿ãšã³ãã¥ããã£
ããã°ã©ãã³ã°èšèªãåŠã¶æ ã¯ãPerlã®è±å¯ãªåŠç¿ãªãœãŒã¹ãšæŽ»çºãªã³ãã¥ããã£ã«ãã£ãŠãããè±ãã§ãµããŒãããããã®ã«ãªããŸãã
7.1. åŠç¿ãªãœãŒã¹ãšãªã³ã©ã€ã³ã³ãŒã¹
PerlãåŠã¶ããã®ãªãœãŒã¹ã¯ã€ã³ã¿ãŒãããäžã«è±å¯ã«ãããŸãããªã³ã©ã€ã³ã³ãŒã¹ããã¥ãŒããªã¢ã«ãããã¥ã¡ã³ãããããŠæžç±ãªã©ãå€ãã®åœ¢åŒã§ç¥èãåŸãããšãã§ããŸããç¹ã«ãperldoc
ã³ãã³ãã䜿çšããŠã¢ã¯ã»ã¹ã§ããPerlããã¥ã¡ã³ããŒã·ã§ã³ã¯ãéåžžã«è©³çŽ°ã§ãããåå¿è
ããäžçŽè
ãŸã§åœ¹ç«ã€æ
å ±ãè©°ãŸã£ãŠããŸãã
7.2. ã³ãã¥ããã£ãšãã©ãŒã©ã
Perlã³ãã¥ããã£ã¯ããã©ãŒã©ã ãã¡ãŒãªã³ã°ãªã¹ãããããŠããŒã«ã«ã°ã«ãŒããéããŠãããã°ã©ããŒãç¥èãå ±æãããµããŒããæäŸãåãå ŽãæäŸããŠããŸããäŸãã°ãPerlMonksãStack Overflowã®Perlã¿ã°ã¯ã質åãæçš¿ãããšãã¹ããŒãããã®åçãåŸãã®ã«åªããå Žæã§ãã
7.3. ãããžã§ã¯ããšã³ã³ããªãã¥ãŒã·ã§ã³
ãªãŒãã³ãœãŒã¹ãããžã§ã¯ãã«åå ããããšã¯ãæ°ããã¹ãã«ãåŠã³ãå®äžçã®ãããžã§ã¯ãã§çµéšãç©ãçŽ æŽãããæ¹æ³ã§ããPerlã³ãã¥ããã£ã¯ãCPANïŒComprehensive Perl Archive NetworkïŒãéããŠãå€ãã®ãããžã§ã¯ããšã¢ãžã¥ãŒã«ãå ±æããŠããŸãããããã®ãããžã§ã¯ãã«è²¢ç®ããããšã§ãå®éã®ã³ãŒãããŒã¹ã§ã®äœæ¥çµéšãåŸãããšãã§ããã³ãã¥ããã£ã«è²¢ç®ããããšãã§ããŸãã
8. ãŸãšããšæ¬¡ã®ã¹ããã
Perlããã°ã©ãã³ã°ã®æ ã¯ãç¡éã®å¯èœæ§ãšåŠã³ããããŸãããã®èšäºãéããŠãPerlã®åºæ¬çãªåŽé¢ãšãã®å€æ§ãªçšéã«ã€ããŠç解ãæ·±ããããšãã§ããããšãé¡ã£ãŠããŸãã
8.1. Perlããã°ã©ãã³ã°ã®å¯èœæ§
Perlã¯ãããã¹ãåŠçãããŠã§ãéçºãã·ã¹ãã 管çãŸã§ãå€å²ã«ãããã¿ã¹ã¯ãå¹ççã«ããªãåãæã£ãŠããŸãããã®åŒ·åãªããã¹ãåŠçèœåãšè±å¯ãªã¢ãžã¥ãŒã«ããããŒã¿è§£æãèªååã¿ã¹ã¯ã«ãããŠãéåžžã«åœ¹ç«ã¡ãŸãã
8.2. ä»åŸã®åŠç¿ãšãã£ãªã¢ãã¹
Perlã®åŠç¿ãæ·±ããããšã§ãã·ã¹ãã 管çããŠã§ãéçºãããŒã¿è§£æãªã©ãå€ãã®åéã§ã¹ãã«ãçºæ®ããããšãã§ããŸããPerlã³ãã¥ããã£ã«åå ãããªã¢ã«ã¯ãŒã«ãã®ãããžã§ã¯ãã«è²¢ç®ããããšã§ãæŽãªãã¹ãã«ã磚ãããšãã§ããŸãã
8.3. ä»ã®ããã°ã©ãã³ã°èšèªãšã®é£æº
Perlã¯ãä»ã®å€ãã®ããã°ã©ãã³ã°èšèªãšãé£æºãå¯èœã§ããäŸãã°ãPythonãRubyãšãã£ãèšèªãšããŒã¿ãããåãããããã·ã¹ãã ãé£æºããããããããšãã§ããŸãããã®èœåã¯ã倧èŠæš¡ãªã·ã¹ãã ããã«ããã¯ãããžãŒãããžã§ã¯ãã«ãããŠãéåžžã«äŸ¡å€ã®ãããã®ãšãªããŸãã
åèæç®
以äžã®ãŠã§ããµã€ããåèã«ããŸããã
- Perl.org: Perlã®å ¬åŒãŠã§ããµã€ãã§ãPerlã®åºæ¬æ å ±ãããŠã³ããŒããªã³ã¯ãããã¥ã¡ã³ããŒã·ã§ã³ãã³ãã¥ããã£æ å ±ãªã©ãæäŸãããŠããŸãã