NAME

perlfunc - Perl ÁȤ߹þ¤ß´Ø¿ô


DESCRIPTION

¤³¤ÎÀá¤Î´Ø¿ô¤Ï¡¢¼°¤ÎÃæ¤Ç¹à¤È¤·¤Æ»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤³¤ì¤é¤Ï¡¢Â礭¤¯ 2 ¤Ä¤Ëʬ¤±¤é¤ì¤Þ¤¹: ¥ê¥¹¥È±é»»»Ò¤È̾Á°ÉÕ¤­Ã±¹à±é»»»Ò¤Ç¤¹¡£ ¤³¤ì¤é¤Î°ã¤¤¤Ï¡¢¤½¤Î¸å¤Ë½Ð¤ÆÍè¤ë¥³¥ó¥Þ¤È¤ÎÍ¥Àè½ç°Ì¤Î´Ø·¸¤Ë¤¢¤ê¤Þ¤¹¡£¡¡ (perlop ¤ÎÍ¥Àè½ç°Ì¤Îɽ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£) ¥ê¥¹¥È±é»»»Ò¤Ï 2 ¸Ä°Ê¾å¤Î°ú¿ô¤ò¤È¤ë¤Î¤ËÂФ·¤Æ¡¢ ñ¹à±é»»»Ò¤¬Ê£¿ô¤Î°ú¿ô¤ò¤È¤ë¤³¤È¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¤Ä¤Þ¤ê¡¢¥³¥ó¥Þ¤Ïñ¹à±é»»»Ò¤Î°ú¿ô¤Î½ª¤ï¤ê¤È¤Ê¤ê¤Þ¤¹¤¬¡¢ ¥ê¥¹¥È±é»»»Ò¤Î¾ì¹ç¤Ë¤Ï¡¢°ú¿ô¤Î¶èÀÚ¤ê¤Ç¤·¤«¤¢¤ê¤Þ¤»¤ó¡£ ñ¹à±é»»»Ò¤Ï°ìÈ̤ˡ¢ °ú¿ô¤ËÂФ·¤Æ¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤òÍ¿¤¨¤ë¤Î¤ËÂФ·¤Æ¡¢ ¥¹¥«¥é±é»»»Ò¤Î¾ì¹ç¤Ë¤Ï¡¢°ú¿ô¤ËÂФ·¤Æ¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤òÍ¿¤¨¤ë¾ì¹ç¤â¡¢ ¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤òÍ¿¤¨¤ë¾ì¹ç¤â¤¢¤ê¤Þ¤¹¡£ 1 ¤Ä¤Î¥ê¥¹¥È±é»»»Ò¤¬ ξÊý¤Î¥³¥ó¥Æ¥­¥¹¥È¤òÍ¿¤¨¤ë¾ì¹ç¤Ë¤Ï¡¢¥¹¥«¥é°ú¿ô¤¬¤¤¤¯¤Ä¤«Ê¤ӡ¢ ºÇ¸å¤Ë¥ê¥¹¥È°ú¿ô¤¬ 1 ¤Ä³¤­¤Þ¤¹¡£ (¥ê¥¹¥È°ú¿ô¤Ï 1 ¤Ä¤À¤±¤Ç¤¹¡£) ¤¿¤È¤¨¤Ð¡¢splice() ¤Ï 3 ¤Ä¤Î¥¹¥«¥é°ú¿ô¤Ë 1 ¤Ä¤Î¥ê¥¹¥È°ú¿ô¤¬Â³¤­¤Þ¤¹¡£ °ìÊý gethostbyname() ¤Ï 4 ¤Ä¤Î¥¹¥«¥é°ú¿ô¤ò»ý¤Á¤Þ¤¹¡£

¸å¤ËºÜ¤»¤ë¹½Ê¸µ­½Ò¤Ç¤Ï¡¢¥ê¥¹¥È¤ò¤È¤ê (¤½¤Î¥ê¥¹¥È¤ÎÍ×ÁǤ˥ꥹ¥È¥³¥ó¥Æ¥­¥¹¥È¤òÍ¿¤¨¤ë) ¥ê¥¹¥È±é»»»Ò¤Ï¡¢°ú¿ô¤È¤·¤Æ LIST ¤ò¤È¤ë¤è¤¦¤Ë½ñ¤¤¤Æ¤¤¤Þ¤¹¡£ ¤½¤Î¤è¤¦¤Ê¥ê¥¹¥È¤Ë¤Ï¡¢Ç¤°Õ¤Î¥¹¥«¥é°ú¿ô¤ÎÁȤ߹ç¤ï¤»¤ä¥ê¥¹¥ÈÃͤò ´Þ¤á¤ë¤³¤È¤¬¤Ç¤­¡¢¥ê¥¹¥ÈÃͤϥꥹ¥È¤ÎÃæ¤Ë¡¢ ¸Ä¡¹¤ÎÍ×ÁǤ¬Å¸³«¤µ¤ì¤¿¤è¤¦¤ËËä¤á¹þ¤Þ¤ì¤Þ¤¹¡£ 1 ¼¡¸µ¤ÎŤ¤¥ê¥¹¥ÈÃͤ¬·ÁÀ®¤µ¤ì¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ LIST ¤ÎÍ×ÁǤϡ¢¥³¥ó¥Þ¤Ç¶èÀÚ¤é¤ì¤Þ¤¹¡£

°Ê²¼¤Î¥ê¥¹¥È¤Î´Ø¿ô¤Ï¤¹¤Ù¤Æ¡¢°ú¿ô¤ÎÁ°¸å¤Î³ç¸Ì¤Ï¾Êά²Äǽ¤È ¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ (¹½Ê¸µ­½Ò¤Ç¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹¡£) ³ç¸Ì¤ò»È¤¦¤È¤­¤Ë¤Ï¡¢ ñ½ã¤Ê (¤·¤«¤·¡¢¤È¤­¤Ë¤Ï¶Ã¤¯·ë²Ì¤È¤Ê¤ë) µ¬Â§¤¬Å¬ÍѤǤ­¤Þ¤¹: ´Ø¿ô¤Ë¸«¤¨¤ë¤Ê¤é¤Ð¡¢¤½¤ì¤Ï´Ø¿ô¤Ç¡¢Í¥Àè½ç°Ì¤Ï´Ø·¸¤¢¤ê¤Þ¤»¤ó¡£ ¤½¤¦¸«¤¨¤Ê¤±¤ì¤Ð¡¢¤½¤ì¤Ï¥ê¥¹¥È±é»»»Ò¤«Ã±¹à±é»»»Ò¤Ç¡¢Í¥Àè½ç°Ì¤¬ ´Ø·¸¤·¤Þ¤¹¡£ ¤Þ¤¿¡¢´Ø¿ô¤È³«¤­³ç¸Ì¤Î´Ö¤Î¶õÇò¤Ï´Ø·¸¤¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢ ¤È¤­¤Ëµ¤¤òÉÕ¤±¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó:

    print 1+2+4;        # Prints 7.
    print(1+2) + 4;     # Prints 3.
    print (1+2)+4;      # Also prints 3!
    print +(1+2)+4;     # Prints 7.
    print ((1+2)+4);    # Prints 7.

Perl ¤Ë -w ¥¹¥¤¥Ã¥Á¤òÉÕ¤±¤Æ¼Â¹Ô¤¹¤ì¤Ð¡¢¤³¤¦¤¤¤Ã¤¿¤â¤Î¤Ë¤Ï ·Ù¹ð¤ò½Ð¤·¤Æ¤¯¤ì¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢¾åµ­¤Î 3 ¤Ä¤á¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê·Ù¹ð¤¬½Ð¤Þ¤¹:

    print (...) interpreted as function at - line 1.
    Useless use of integer addition in void context at - line 1.

¤¤¤¯¤Ä¤«¤Î´Ø¿ô¤Ï°ú¿ô¤òÁ´¤¯¤È¤é¤Ê¤¤¤Î¤Ç¡¢Ã±¹à±é»»»Ò¤È¤·¤Æ¤â ¥ê¥¹¥È±é»»»Ò¤È¤·¤Æ¤âưºî¤·¤Þ¤»¤ó¡£ ¤³¤Î¤è¤¦¤Ê´Ø¿ô¤È¤·¤Æ¤Ï time ¤ä endpwent ¤¬¤¢¤ê¤Þ¤¹¡£ Î㤨¤Ð¡¢time+86_400 ¤Ï¾ï¤Ë time() + 86_400 ¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£

¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤â¡¢¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¤â»È¤¨¤ë´Ø¿ô¤Ï¡¢ Ã×̿Ū¤Ç¤Ê¤¤¥¨¥é¡¼¤ò¼¨¤¹¤¿¤á¤Ë¡¢¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï ̤ÄêµÁÃͤòÊÖ¤·¡¢¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¶õ¥ê¥¹¥È¤òÊÖ¤·¤Þ¤¹¡£

°Ê²¼¤Ë½Ò¤Ù¤ë½ÅÍפʥ롼¥ë¤ò˺¤ì¤Ê¤¤¤Ç²¼¤µ¤¤: ¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Î ¿¶¤ëÉñ¤¤¤È¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Î¿¶¤ëÉñ¤¤¤Î´Ø·¸¡¢¤¢¤ë¤¤¤Ï¤½¤ÎµÕ¤Ë ¥ë¡¼¥ë¤Ï¤¢¤ê¤Þ¤»¤ó¡£ 2 ¤Ä¤ÎÁ´¤¯°Û¤Ê¤Ã¤¿¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ ¤½¤ì¤¾¤ì¤Î±é»»»Ò¤È´Ø¿ô¤Ï¡¢¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢¤â¤Ã¤È¤âŬÀÚ¤È »×¤ï¤ì¤ëÃͤòÊÖ¤·¤Þ¤¹¡£ ¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤ÇÊÖ¤¹»þ¤Î¥ê¥¹¥È¤ÎŤµ¤òÊÖ¤¹±é»»»Ò¤â¤¢¤ê¤Þ¤¹¡£ ¥ê¥¹¥È¤ÎºÇ½é¤ÎÃͤòÊÖ¤¹±é»»»Ò¤â¤¢¤ê¤Þ¤¹¡£ ¥ê¥¹¥È¤ÎºÇ¸å¤ÎÃͤòÊÖ¤¹±é»»»Ò¤â¤¢¤ê¤Þ¤¹¡£ À®¸ù¤·¤¿Áàºî¤Î¿ô¤òÊÖ¤¹±é»»»Ò¤â¤¢¤ê¤Þ¤¹¡£ °ìÈÌŪ¤Ë¤Ï¡¢°ì´ÓÀ­¤òµá¤á¤Ê¤¤¸Â¤ê¡¢¤³¤Á¤é¤¬µá¤á¤ë¤³¤È¤ò¤·¤Þ¤¹¡£

¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Î̾Á°ÉÕ¤­ÇÛÎó¤Ï¡¢¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Î¥ê¥¹¥È¤ò °ìÌܸ«¤¿¤â¤Î¤È¤ÏÁ´¤¯°ã¤¤¤Þ¤¹¡£ ¥³¥ó¥Ñ¥¤¥é¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥³¥ó¥Æ¥­¥¹¥È¤òÃΤäƤ¤¤ë¤Î¤Ç¡¢ (1,2,3) ¤Î¤è¤¦¤Ê¥ê¥¹¥È¤ò¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤ÇÆÀ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ ¤³¤ì¤Ï¥¹¥«¥é¥³¥ó¥Þ±é»»»Ò¤òÀ¸À®¤·¡¢¥³¥ó¥Þ¤Î¥ê¥¹¥ÈºîÀ®ÈǤǤϤ¢¤ê¤Þ¤»¤ó¡£ ¤³¤ì¤Ï½é¤á¤«¤é¥ê¥¹¥È¤Ç¤¢¤ë¤³¤È¤Ï¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£

°ìÈÌŪ¤Ë¡¢Æ±¤¸Ì¾Á°¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î¥é¥Ã¥Ñ¡¼¤È¤·¤ÆÆ°ºî¤¹¤ë Perl ¤Î´Ø¿ô (chown(2), fork(2), closedir(2) ¤Ê¤É)¤Ï¡¢°Ê²¼¤Ë½Ò¤Ù¤ë¤è¤¦¤Ë¡¢ À®¸ù»þ¤Ë¿¿¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ð undef ¤òÊÖ¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¼ºÇÔ»þ¤Ë -1 ¤òÊÖ¤¹ C ¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤È¤Ï°ã¤¤¤Þ¤¹¡£ ¤³¤Î¥ë¡¼¥ë¤ÎÎã³°¤Ï wait, waitpid, syscall ¤Ç¤¹¡£ ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¼ºÇÔ»þ¤ËÆÃ¼ìÊÑ¿ô $! ¤ò¥»¥Ã¥È¤·¤Þ¤¹¡£ ¤½¤Î¾¤Î´Ø¿ô¤Ï¡¢»ö¸Î¤ò½ü¤¤¤Æ¡¢¥»¥Ã¥È¤·¤Þ¤»¤ó¡£

¥«¥Æ¥´¥êÊ̤ΠPerl ´Ø¿ô

°Ê²¼¤Ë¡¢¥«¥Æ¥´¥êÊ̤δؿô(¥­¡¼¥ï¡¼¥É¤ä̾Á°ÉÕ¤­±é»»»Ò¤Î¤è¤¦¤Ê¡¢ ´Ø¿ô¤Î¤è¤¦¤Ë¸«¤¨¤ë¤â¤Î¤â´Þ¤ß¤Þ¤¹)¤ò¼¨¤·¤Þ¤¹¡£ Ê£¿ô¤Î¾ì½ê¤Ë¸½¤ì¤ë´Ø¿ô¤â¤¢¤ê¤Þ¤¹¡£

Functions for SCALARs or strings

(¥¹¥«¥é¤äʸ»úÎó¤Î¤¿¤á¤Î´Ø¿ô)

chomp, chop, chr, crypt, hex, index, lc, lcfirst, length, oct, ord, pack, q//, qq//, reverse, rindex, sprintf, substr, tr///, uc, ucfirst, y///

Regular expressions and pattern matching

(Àµµ¬É½¸½¤È¥Ñ¥¿¡¼¥ó¥Þ¥Ã¥Á¥ó¥°)

m//, pos, quotemeta, s///, split, study, qr//

Numeric functions

(¿ôÃÍ´Ø¿ô)

abs, atan2, cos, exp, hex, int, log, oct, rand, sin, sqrt, srand

Functions for real @ARRAYs

(¼ÂÇÛÎó¤Î¤¿¤á¤Î´Ø¿ô)

pop, push, shift, splice, unshift

Functions for list data

(¥ê¥¹¥È¥Ç¡¼¥¿¤Î¤¿¤á¤Î´Ø¿ô)

grep, join, map, qw//, reverse, sort, unpack

Functions for real %HASHes

(¼Â¥Ï¥Ã¥·¥å¤Î¤¿¤á¤Î´Ø¿ô)

delete, each, exists, keys, values

Input and output functions

(Æþ½ÐÎÏ´Ø¿ô)

binmode, close, closedir, dbmclose, dbmopen, die, eof, fileno, flock, format, getc, print, printf, read, readdir, rewinddir, say, seek, seekdir, select, syscall, sysread, sysseek, syswrite, tell, telldir, truncate, warn, write

Functions for fixed length data or records

(¸ÇÄêĹ¥Ç¡¼¥¿¤ä¥ì¥³¡¼¥É¤Î¤¿¤á¤Î´Ø¿ô)

pack, read, syscall, sysread, syswrite, unpack, vec

Functions for filehandles, files, or directories

(¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¡¢¥Õ¥¡¥¤¥ë¡¢¥Ç¥£¥ì¥¯¥È¥ê¤Î¤¿¤á¤Î´Ø¿ô)

-X, chdir, chmod, chown, chroot, fcntl, glob, ioctl, link, lstat, mkdir, open, opendir, readlink, rename, rmdir, stat, symlink, sysopen, umask, unlink, utime

Keywords related to the control flow of your Perl program

(¥×¥í¥°¥é¥à¤Îή¤ì¤òÀ©¸æ¤¹¤ë¤³¤È¤Ë´ØÏ¢¤¹¤ë¥­¡¼¥ï¡¼¥É)

caller, continue, die, do, dump, eval, exit, goto, last, next, redo, return, sub, wantarray

Keywords related to switch

(switch ¤Ë´ØÏ¢¤¹¤ë¥­¡¼¥ï¡¼¥É)

break, continue, given, when, default

(¤³¤ì¤é¤Ï "switch" µ¡Ç½¤¬Í­¸ú¤Î¾ì¹ç¤Ë¤Î¤ßÍøÍѲÄǽ¤Ç¤¹¡£ feature ¤È Switch statements in perlsyn ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£)

Keywords related to scoping

(¥¹¥³¡¼¥×¤Ë´Ø¤¹¤ë¥­¡¼¥ï¡¼¥É)

caller, import, local, my, our, state, package, use

(state ¤Ï "state" µ¡Ç½¤¬Í­¸ú¤Î¾ì¹ç¤Ë¤Î¤ßÍøÍѲÄǽ¤Ç¤¹¡£ feature ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£)

Miscellaneous functions

(¤µ¤Þ¤¶¤Þ¤Ê´Ø¿ô)

defined, dump, eval, formline, local, my, our, reset, scalar, state, undef, wantarray

Functions for processes and process groups

(¥×¥í¥»¥¹¤È¥×¥í¥»¥¹¥°¥ë¡¼¥×¤Î¤¿¤á¤Î´Ø¿ô)

alarm, exec, fork, getpgrp, getppid, getpriority, kill, pipe, qx//, setpgrp, setpriority, sleep, system, times, wait, waitpid

Keywords related to perl modules

(perl ¥â¥¸¥å¡¼¥ë¤Ë´Ø¤¹¤ë¥­¡¼¥ï¡¼¥É)

do, import, no, package, require, use

Keywords related to classes and object-orientation

(¥¯¥é¥¹¤È¥ª¥Ö¥¸¥§¥¯¥È»Ø¸þ¤Ë´Ø¤¹¤ë¥­¡¼¥ï¡¼¥É)

bless, dbmclose, dbmopen, package, ref, tie, tied, untie, use

Low-level socket functions

(Äã¥ì¥Ù¥ë¥½¥±¥Ã¥È´Ø¿ô)

accept, bind, connect, getpeername, getsockname, getsockopt, listen, recv, send, setsockopt, shutdown, socket, socketpair

System V interprocess communication functions

(System V ¥×¥í¥»¥¹´ÖÄÌ¿®´Ø¿ô)

msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop, shmctl, shmget, shmread, shmwrite

Fetching user and group info

(¥æ¡¼¥¶¡¼¤È¥°¥ë¡¼¥×¤Î¾ðÊó¼èÆÀ)

endgrent, endhostent, endnetent, endpwent, getgrent, getgrgid, getgrnam, getlogin, getpwent, getpwnam, getpwuid, setgrent, setpwent

Fetching network info

(¥Í¥Ã¥È¥ï¡¼¥¯¾ðÊó¼èÆÀ)

endprotoent, endservent, gethostbyaddr, gethostbyname, gethostent, getnetbyaddr, getnetbyname, getnetent, getprotobyname, getprotobynumber, getprotoent, getservbyname, getservbyport, getservent, sethostent, setnetent, setprotoent, setservent

Time-related functions

(»þ¹ï¤Ë´Ø¤¹¤ë´Ø¿ô)

gmtime, localtime, time, times

Functions new in perl5

(perl5 ¤Ç¿·Àߤµ¤ì¤¿´Ø¿ô)

abs, bless, break, chomp, chr, continue, default, exists, formline, given, glob, import, lc, lcfirst, lock, map, my, no, our, prototype, qr//, qw//, qx//, readline, readpipe, ref, sub*, sysopen, tie, tied, uc, ucfirst, untie, use, when

* - sub ¤Ï perl4 ¤Ç¤Ï¥­¡¼¥ï¡¼¥É¤Ç¤¹¤¬¡¢perl5 ¤Ç¤Ï±é»»»Ò¤Ê¤Î¤Ç¡¢ ¼°¤Ç»È¤¨¤Þ¤¹¡£

Functions obsoleted in perl5

(perl5 ¤Ç¤Ï¸Å¤¤¤â¤Î¤È¤Ê¤Ã¤¿´Ø¿ô)

dbmclose, dbmopen

°Ü¿¢À­

Perl ¤Ï Unix ´Ä¶­¤ÇÀ¸¤Þ¤ì¤¿¤Î¤Ç¡¢Á´¤Æ¤Î¶¦Ä̤¹¤ë Unix ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ë ¥¢¥¯¥»¥¹¤·¤Þ¤¹¡£Èó Unix ´Ä¶­¤Ç¤Ï¡¢¤¤¤¯¤Ä¤«¤Î Unix ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î µ¡Ç½¤¬»È¤¨¤Ê¤«¤Ã¤¿¤ê¡¢»È¤¨¤ëµ¡Ç½¤Î¾ÜºÙ¤¬Â¿¾¯°Û¤Ê¤Ã¤¿¤ê¤·¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤ë±Æ¶Á¤ò¼õ¤±¤ë Perl ´Ø¿ô¤Ï°Ê²¼¤Î¤â¤Î¤Ç¤¹:

-X, binmode, chmod, chown, chroot, crypt, dbmclose, dbmopen, dump, endgrent, endhostent, endnetent, endprotoent, endpwent, endservent, exec, fcntl, flock, fork, getgrent, getgrgid, gethostbyname, gethostent, getlogin, getnetbyaddr, getnetbyname, getnetent, getppid, getpgrp, getpriority, getprotobynumber, getprotoent, getpwent, getpwnam, getpwuid, getservbyport, getservent, getsockopt, glob, ioctl, kill, link, lstat, msgctl, msgget, msgrcv, msgsnd, open, pipe, readlink, rename, select, semctl, semget, semop, setgrent, sethostent, setnetent, setpgrp, setpriority, setprotoent, setpwent, setservent, setsockopt, shmctl, shmget, shmread, shmwrite, socket, socketpair, stat, symlink, syscall, sysopen, system, times, truncate, umask, unlink, utime, wait, waitpid

¤³¤ì¤é¤Î´Ø¿ô¤Î°Ü¿¢À­¤Ë´Ø¤¹¤ë¤µ¤é¤Ê¤ë¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï¡¢ perlport ¤È¤½¤Î¾¤Î¥×¥é¥Ã¥È¥Û¡¼¥à¸ÇÍ­¤Î¥É¥­¥å¥á¥ó¥È¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

Alphabetical Listing of Perl Functions

-X FILEHANDLE
-X EXPR
-X DIRHANDLE
-X

X ¤Ï°Ê²¼¤Ë¤¢¤²¤ëʸ»ú¤Ç¡¢¥Õ¥¡¥¤¥ë¥Æ¥¹¥È¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ ¤³¤Îñ¹à±é»»»Ò¤Ï¡¢¥Õ¥¡¥¤¥ë̾¤«¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤òÍ£°ì¤Î °ú¿ô¤È¤·¤ÆÆ°ºî¤·¡¢¡Ö¤¢¤ë¤³¤È¡×¤Ë¤Ä¤¤¤Æ¿¿¤Ç¤¢¤ë¤«Èݤ«¤ò ȽÄꤷ¤¿·ë²Ì¤òÊÖ¤·¤Þ¤¹¡£ °ú¿ô¤¬¾Êά¤µ¤ì¤ë¤È¡¢-t ¤Ç¤Ï STDIN ¤òÄ´¤Ù¤Þ¤¹¤¬¡¢¤½¤Î¾¤Ï $_ ¤òÄ´¤Ù¤Þ¤¹¡£ ÆÃ¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¿¿¤È¤·¤Æ 1 ¤òÊÖ¤·¡¢µ¶¤È¤·¤Æ '' ¤òÊÖ¤·¡¢¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¢Ì¤ÄêµÁÃͤòÊÖ¤·¤Þ¤¹¡£ ¤ß¤«¤±¤ÏÊѤï¤Ã¤Æ¤¤¤Þ¤¹¤¬¡¢Í¥Àè½ç°Ì¤Ï̾Á°ÉÕ¤­Ã±¹à±é»»»Ò¤ÈƱ¤¸¤Ç¡¢ ¾¤Îñ¹à±é»»»Ò¤ÈƱ¤¸¤¯¡¢°ú¿ô¤ò³ç¸Ì¤Ç³ç¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ ±é»»»Ò¤Ë¤Ï°Ê²¼¤Î¤â¤Î¤¬¤¢¤ê¤Þ¤¹:

    -r  ¥Õ¥¡¥¤¥ë¤¬¼Â¸ú uid/gid ¤ÇÆÉ¤ß½Ð¤·²Ä
    -w  ¥Õ¥¡¥¤¥ë¤¬¼Â¸ú uid/gid ¤Ç½ñ¤­¹þ¤ß²Ä
    -x  ¥Õ¥¡¥¤¥ë¤¬¼Â¸ú uid/gid ¤Ç¼Â¹Ô²Ä
    -o  ¥Õ¥¡¥¤¥ë¤¬¼Â¸ú uid ¤Î½êͭʪ
    -R  ¥Õ¥¡¥¤¥ë¤¬¼Â uid/gid ¤ÇÆÉ¤ß½Ð¤·²Ä
    -W  ¥Õ¥¡¥¤¥ë¤¬¼Â uid/gid ¤Ç½ñ¤­¹þ¤ß²Ä
    -X  ¥Õ¥¡¥¤¥ë¤¬¼Â uid/gid ¤Ç¼Â¹Ô²Ä
    -O  ¥Õ¥¡¥¤¥ë¤¬¼Â uid ¤Î½êͭʪ
    -e  ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤¹¤ë
    -z  ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤¬¥¼¥í(¶õ)
    -s  ¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤¬¥¼¥í°Ê³° (¥Ð¥¤¥Èñ°Ì¤Ç¤ÎÂ礭¤µ¤òÊÖ¤¹)
    -f  ¥Õ¥¡¥¤¥ë¤ÏÄ̾ï¥Õ¥¡¥¤¥ë
    -d  ¥Õ¥¡¥¤¥ë¤Ï¥Ç¥£¥ì¥¯¥È¥ê
    -l  ¥Õ¥¡¥¤¥ë¤Ï¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯
    -p  ¥Õ¥¡¥¤¥ë¤Ï̾Á°ÉÕ¤­¥Ñ¥¤¥× (FIFO) ¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ï¥Ñ¥¤¥×
    -S  ¥Õ¥¡¥¤¥ë¤Ï¥½¥±¥Ã¥È
    -b  ¥Õ¥¡¥¤¥ë¤Ï¥Ö¥í¥Ã¥¯ÆÃ¼ì¥Õ¥¡¥¤¥ë
    -c  ¥Õ¥¡¥¤¥ë¤Ï¥­¥ã¥é¥¯¥¿ÆÃ¼ì¥Õ¥¡¥¤¥ë
    -t  ¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ï tty ¤Ë¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë
    -u  ¥Õ¥¡¥¤¥ë¤Î setuid ¥Ó¥Ã¥È¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë
    -g  ¥Õ¥¡¥¤¥ë¤Î setgid ¥Ó¥Ã¥È¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë
    -k  ¥Õ¥¡¥¤¥ë¤Î sticky ¥Ó¥Ã¥È¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë
    -T  ¥Õ¥¡¥¤¥ë¤Ï ASCII ¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë (ȯ¸«Åª¤Ë¿ä¬¤·¤Þ¤¹)
    -B  ¥Õ¥¡¥¤¥ë¤Ï¡Ö¥Ð¥¤¥Ê¥ê¡×¥Õ¥¡¥¤¥ë (-T ¤ÎÈ¿ÂÐ)
    -M  ¥¹¥¯¥ê¥×¥È¼Â¹Ô³«»Ï»þ¹ï¤«¤é¥Õ¥¡¥¤¥ë½¤Àµ»þ¹ï¤ò°ú¤¤¤¿¤â¤Î(Æüñ°Ì)
    -A  ƱÍͤ˥¢¥¯¥»¥¹¤¬¤¢¤Ã¤Æ¤«¤é¤ÎÆü¿ô
    -C  ƱÍͤË(Unix ¤Ç¤Ï) inode ¤¬Êѹ¹¤µ¤ì¤Æ¤«¤é¤ÎÆü¿ô(¤½¤ì°Ê³°¤Î¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Ï°ã¤¦¤«¤â¤·¤ì¤Þ¤»¤ó)

Îã:

    while (<>) {
        chomp;
        next unless -f $_;      # ignore specials
        #...
    }

¥Õ¥¡¥¤¥ë¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó±é»»»Ò -r, -R, -w, -W, -x, -X ¤Î²ò¼á¤Ï¡¢¥Õ¥¡¥¤¥ë¤Î¥â¡¼¥É¤È¥æ¡¼¥¶¤Î¼Â¸ú¡¿¼Â uid ¤È ¼Â¸ú¡¿¼Â gid ¤Î¤ß¤«¤éȽÃǤµ¤ì¤Þ¤¹¡£ ¼ÂºÝ¤Ë¥Õ¥¡¥¤¥ë¤¬ÆÉ¤á¤¿¤ê¡¢½ñ¤±¤¿¤ê¡¢¼Â¹Ô¤Ç¤­¤¿¤ê¤¹¤ë¤¿¤á¤Ë¤Ï¡¢ Ê̤ξò·ï¤¬É¬Íפ«¤â¤·¤ì¤Þ¤»¤ó: Î㤨¤Ð¡¢¥Í¥Ã¥È¥ï¡¼¥¯¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¥¢¥¯¥»¥¹¥³¥ó¥È¥í¡¼¥ë¡¢ ACL(¥¢¥¯¥»¥¹¥³¥ó¥È¥í¡¼¥ë¥ê¥¹¥È)¡¢ÆÉ¤ß¹þ¤ßÀìÍÑ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¡¢ ǧ¼±¤Ç¤­¤Ê¤¤¼Â¹Ô¥Õ¥¡¥¤¥ë¥Õ¥©¡¼¥Þ¥Ã¥È¡¢¤Ê¤É¤Ç¤¹¡£ ¤³¤ì¤é¤Î 6 ¤Ä¤Î±é»»»Ò¤ò¡¢ÆÃÄê¤ÎÁàºî¤¬²Äǽ¤«¤É¤¦¤«¤ò³Îǧ¤¹¤ë¤¿¤á¤Ë»È¤¦¤Î¤Ï Ä̾ï¤Ï¸í¤ê¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤; ¤Ê¤¼¤Ê¤é¡¢¤³¤ì¤é¤Ï¶¥¹ç¾ò·ï¤ò ¾·¤­¤ä¤¹¤¤¤«¤é¤Ç¤¹¡£

¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¤Ë¤Ï¡¢ -r, -R, -w, -W ¤ËÂФ·¤Æ¡¢¾ï¤Ë 1 ¤¬Ê֤ꡢ¥â¡¼¥ÉÃæ¤Î ¤¤¤º¤ì¤«¤Î¼Â¹Ôµö²Ä¥Ó¥Ã¥È¤¬Î©¤Ã¤Æ¤¤¤ì¤Ð¡¢-x, -X ¤Ë¤â 1 ¤¬ Ê֤뤳¤È¤Ë¤âÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¤¬¼Â¹Ô¤¹¤ë¥¹¥¯¥ê¥×¥È¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë¤Î¥â¡¼¥É¤òÄ´¤Ù¤ë¤¿¤á¤Ë¤Ï¡¢ stat() ¤ò¹Ô¤Ê¤¦¤«¡¢¼Â¸ú uid ¤ò°ì»þŪ¤ËÊ̤Τâ¤Î¤Ë¤¹¤ë ɬÍפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£

ACL ¤ò»È¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¡¢À¸¤Î stat() ¥â¡¼¥É¥Ó¥Ã¥È¤è¤ê ÀºÅ٤ι⤤·ë²Ì¤òºîÀ®¤¹¤ë filetest ¥×¥é¥°¥Þ¤¬¤¢¤ê¤Þ¤¹¡£ use filetest 'access' ¤È¤·¤¿¾ì¹ç¡¢¾å½Ò¤·¤¿¥Õ¥¡¥¤¥ë¥Æ¥¹¥È¤Ï ¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î access() ¥Õ¥¡¥ß¥ê¡¼¤ò»È¤Ã¤Æ¸¢¸Â¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤ë¤« ¤É¤¦¤«¤ò¥Æ¥¹¥È¤·¤Þ¤¹¡£ ¤Þ¤¿¡¢¤³¤Î¥×¥é¥°¥Þ¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢-x ¤È -X ¤Ï ¤¿¤È¤¨¼Â¹Ôµö²Ä¥Ó¥Ã¥È(¤Þ¤¿¤ÏÄɲäμ¹Եö²Ä ACL)¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤Ê¤¤ ¾ì¹ç¤Ç¤â¿¿¤òÊÖ¤¹¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤Îµóư¤Ï»ÈÍѤ¹¤ë¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÄêµÁ¤Ë¤è¤ë¤â¤Î¤Ç¤¹¡£ use filetest 'access' ¤Î¼ÂÁõ¤Ë¤è¤ê¡¢¤³¤Î¥×¥é¥°¥Þ¤¬Í­¸ú¤Î¾ì¹ç¤Ï _ ÆÃ¼ì¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ï¥Õ¥¡¥¤¥ë¥Æ¥¹¥È¤Î·ë²Ì¤ò¥­¥ã¥Ã¥·¥å¤·¤Ê¤¤¤³¤È¤Ë Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤µ¤é¤Ê¤ë¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï filetest ¥×¥é¥°¥Þ¤Î¥É¥­¥å¥á¥ó¥È¤ò »²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

-s/a/b ¤Ï¡¢ÃÖ´¹±é»» (s///) ¤ÎÉä¹æÈ¿Å¾¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¤·¤«¤·¡¢-exp($foo) ¤Ï´üÂԤɤª¤ê¤Ëưºî¤·¤Þ¤¹¡£ ¥Þ¥¤¥Ê¥¹µ­¹æ¤Î¸å¤Ë±Ñ»ú¤¬ 1 »ú³¤¯¤È¤­¤Ë¤Î¤ß¡¢¥Õ¥¡¥¤¥ë¥Æ¥¹¥È¤È ²ò¼á¤µ¤ì¤Þ¤¹¡£

¥Õ¥¡¥¤¥ë¥Æ¥¹¥È -T ¤È -B ¤Îưºî¸¶Íý¤Ï¡¢¼¡¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¤ÎºÇ½é¤Î¿ô¥Ö¥í¥Ã¥¯¤òÄ´¤Ù¤Æ¡¢ÊѤï¤Ã¤¿À©¸æ¥³¡¼¥É¤ä ¾å°Ì¥Ó¥Ã¥È¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤è¤¦¤Ê¡¢Ä̾ï¤Î¥Æ¥­¥¹¥È¤Ë¤Ï¸½¤ì¤Ê¤¤Ê¸»ú¤òõ¤·¤Þ¤¹¡£ ¤½¤Î¤è¤¦¤Êʸ»ú¤¬¡¢¤¿¤¯¤µ¤ó (>30%) ¸«¤Ä¤«¤ë¤è¤¦¤Ç¤¢¤ì¤Ð¡¢ ¤½¤Î¥Õ¥¡¥¤¥ë¤Ï -B ¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¤ÈȽÃǤµ¤ì¤Þ¤¹; ¤µ¤â¤Ê¤±¤ì¤Ð -T ¥Õ¥¡¥¤¥ë¤È¤Ê¤ê¤Þ¤¹¡£ ºÇ½é¤Î¥Ö¥í¥Ã¥¯¤Ë¥Ì¥ëʸ»ú¤¬´Þ¤Þ¤ì¤ë¥Õ¥¡¥¤¥ë¤â¡¢ ¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£ -T ¤ä -B ¤ò¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ËÂФ·¤ÆÍѤ¤¤ë¤È¡¢ ºÇ½é¤Î¥Ö¥í¥Ã¥¯¤òÄ´¤Ù¤ëÂå¤ï¤ê¤Ë¡¢IO ¥Ð¥Ã¥Õ¥¡¤òÄ´¤Ù¤Þ¤¹¡£ Ä´¤Ù¤¿¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤¬²¿¤â¤Ê¤¤¤È¤­¤ä¡¢ ¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤òÄ´¤Ù¤¿¤È¤­¤Ë EOF ¤Ë㤷¤Æ ¤¤¤¿¤È¤­¤Ë¤Ï¡¢-T ¤â -B ¤â¡Ö¿¿¡×¤òÊÖ¤·¤Þ¤¹¡£ -T ¥Æ¥¹¥È¤ò¤¹¤ë¤¿¤á¤Ë¤Ï¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤Þ¤Ê¤¤¤È¤¤¤±¤Ê¤¤¤Î¤Ç¡¢ ¤¿¤¤¤Æ¤¤¤Ï next unless -f $file && -T $file ¤È¤¤¤¦¤è¤¦¤Ê·Á¤Ç ¤Þ¤ºÄ´¤Ù¤¿¤¤¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ -f ¤ò»È¤¤¤¿¤¤¤Ï¤º¤Ç¤¹¡£

¤É¤Î¥Õ¥¡¥¤¥ë¥Æ¥¹¥È (¤¢¤ë¤¤¤Ï¡¢stat ¤ä lstat) ±é»»»Ò¤Ë¤â¡¢ ²¼Àþ¤À¤±¤«¤éÀ®¤ëÆÃÊ̤ʥե¡¥¤¥ë¥Ï¥ó¥É¥ë¤òÍ¿¤¨¤ë¤È¡¢ Á°²ó¤Î¥Õ¥¡¥¤¥ë¥Æ¥¹¥È (¤ä stat) ¤Î stat ¹½Â¤ÂΤ¬»È¤ï¤ì¡¢ ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò¾Ê¤­¤Þ¤¹¡£ (-t ¤Ë¤Ï»È¤¨¤Þ¤»¤ó¤·¡¢lstat() ¤ä -l ¤Ï¼Â¥Õ¥¡¥¤¥ë¤Ç¤Ï¤Ê¤¯¡¢ ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Î¾ðÊó¤ò stat ¹½Â¤ÂΤ˻Ĥ¹¤³¤È¤ò ³Ð¤¨¤Æ¤ª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£) (¤Þ¤¿¡¢stat ¥Ð¥Ã¥Õ¥¡¤¬ lstat ¸Æ¤Ó½Ð¤·¤ÇËä¤Þ¤Ã¤¿¾ì¹ç¡¢ -T ¤È -B ¤Î·ë²Ì¤Ï stat _ ¤Î·ë²Ì¤Ç¥ê¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£ Îã:

    print "Can do.\n" if -r $a || -w _ || -x _;
    stat($filename);
    print "Readable\n" if -r _;
    print "Writable\n" if -w _;
    print "Executable\n" if -x _;
    print "Setuid\n" if -u _;
    print "Setgid\n" if -g _;
    print "Sticky\n" if -k _;
    print "Text\n" if -T _;
    print "Binary\n" if -B _;

Perl 5.9.1 ¤«¤é¡¢½ã¿è¤Ë¥·¥ó¥¿¥Ã¥¯¥¹¥·¥å¥¬¡¼¤È¤·¤Æ¡¢¥Õ¥¡¥¤¥ë¥Æ¥¹¥È±é»»»Ò¤ò ¥¹¥¿¥Ã¥¯¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ç¡¢-f -w -x $file ¤Ï -x $file && -w _ && -f _ ¤ÈÅù²Á¤Ç¤¹¡£ (¤³¤ì¤Ðʸˡ¾å¤À¤±¤ÎÏäǤ¹; ¤â¤· -f $file ¤ÎÊÖ¤êÃͤò¾¤Î¥Õ¥¡¥¤¥ë¥Æ¥¹¥È ±é»»»Ò¤Î°ú¿ô¤È¤·¤Æ»È¤¦¾ì¹ç¤Ï¡¢²¿¤ÎÆÃÊ̤ʤ³¤È¤âµ¯¤­¤Þ¤»¤ó¡£)

abs VALUE
abs

°ú¿ô¤ÎÀäÂÐÃͤòÊÖ¤·¤Þ¤¹¡£ VALUE ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ï¡¢$_ ¤ò»È¤¤¤Þ¤¹¡£

accept NEWSOCKET,GENERICSOCKET

accept(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÈƱÍͤˡ¢Ãå¿®¤¹¤ë¥½¥±¥Ã¥È¤ÎÀܳ¤ò¼õ¤±ÉÕ¤±¤Þ¤¹¡£ À®¸ù»þ¤Ë¤Ï¥Ñ¥Ã¥¯¤µ¤ì¤¿¥¢¥É¥ì¥¹¤òÊÖ¤·¡¢¼ºÇÔ¤¹¤ì¤Ðµ¶¤òÊÖ¤·¤Þ¤¹¡£ Sockets: Client/Server Communication in perlipc ¤Î Îã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë close-on-exec ¥Õ¥é¥°¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ ¥Õ¥é¥°¤Ï $^F ¤ÎÃͤǷèÄꤵ¤ì¤ë¡¢¿·¤·¤¯¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤ËÂФ·¤Æ ¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£$^F in perlvar ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

alarm SECONDS
alarm

»ØÄꤷ¤¿ÊÉ»þ·×Éÿô¤¬·Ð²á¤·¤¿¸å¤Ë¡¢¼«¥×¥í¥»¥¹¤Ë SIGALRM ¤¬ Á÷¤é¤ì¤Æ¤¯¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£SECONDS ¤¬»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¢ $_¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ëÃͤò»È¤¤¤Þ¤¹¡£ (¥Þ¥·¥ó¤Ë¤è¤Ã¤Æ¤Ï¡¢Éäοô¤¨Êý¤¬°Û¤Ê¤ë¤¿¤á¡¢»ØÄꤷ¤¿Éÿô¤è¤ê¤â ºÇÂç¤Ç 1 É交ì¤Þ¤¹¡£)

°ìÅÙ¤Ë¤Ï 1 ¤Ä¤Î¥¿¥¤¥Þ¤À¤±¤¬ÀßÄê²Äǽ¤Ç¤¹¡£ ¸Æ¤Ó½Ð¤·¤ò¹Ô¤Ê¤¦Å٤ˡ¢°ÊÁ°¤Î¥¿¥¤¥Þ¤ò̵¸ú¤Ë¤·¤Þ¤¹¤·¡¢ ¿·¤·¤¯¥¿¥¤¥Þ¤òµ¯Æ°¤·¤Ê¤¤¤Ç°ÊÁ°¤Î¥¿¥¤¥Þ¤ò¥­¥ã¥ó¥»¥ë¤¹¤ë¤¿¤á¤Ë °ú¿ô¤Ë 0 ¤ò»ØÄꤷ¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ °ÊÁ°¤Î¥¿¥¤¥Þ¤Î»Ä¤ê»þ´Ö¤¬¡¢ÊÖ¤êÃͤȤʤê¤Þ¤¹¡£

1 Éäè¤êÀºÅ٤ι⤤¥¹¥ê¡¼¥×¤ò¹Ô¤Ê¤¦¤Ë¤Ï¡¢ Time::HiRes ¥â¥¸¥å¡¼¥ë(CPAN ¤«¤é¡¢¤Þ¤¿ Perl 5.8 ¤«¤é¤Ï ɸ½àÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹) ¤¬ ualarm() ¤òÄ󶡤·¤Þ¤¹¡£ Perl ¤Î 4 °ú¿ôÈÇ select() ¤òºÇ½é¤Î 3 °ú¿ô¤ò̤ÄêµÁ¤Ë¤·¤Æ»È¤¦¤«¡¢ setitimer(2) ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢Perl ¤Î syscall ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò»È¤Ã¤Æ¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ ¾Ü¤·¤¯¤Ï perlfaq8 ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

alarm ¤È sleep ¤òº®¤¼¤Æ»È¤¦¤Î¤ÏÉáÄ̤ϴְ㤤¤Ç¤¹¡£ (sleep ¤ÏÆâÉôŪ¤Ë alarm ¤ò»È¤Ã¤ÆÆâÉôŪ¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó)

alarm ¤ò¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î»þ´ÖÀÚ¤ì¤Î¤¿¤á¤Ë»È¤¤¤¿¤¤¤Ê¤é¡¢ eval/die ¤Î¥Ú¥¢¤Ç»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ ¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬¼ºÇÔ¤·¤¿¤È¤­¤Ë $! ¤Ë EINTR ¤¬¥»¥Ã¥È¤µ¤ì¤ë¤³¤È¤Ë Íê¤Ã¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£¤Ê¤¼¤Ê¤é¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï Perl ¤Ï ¥·¥¹¥Æ¥à¥³¡¼¥ë¤òºÆ³«¤¹¤ë¤¿¤á¤Ë¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¤òÀßÄꤹ¤ë¤«¤é¤Ç¤¹¡£ eval/die ¤Ï¾ï¤Ë¤¦¤Þ¤¯Æ°¤­¤Þ¤¹¡£ Ãí°ÕÅÀ¤Ë¤Ä¤¤¤Æ¤Ï Signals in perlipc ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

    eval {
        local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
        alarm $timeout;
        $nread = sysread SOCKET, $buffer, $size;
        alarm 0;
    };
    if ($@) {
        die unless $@ eq "alarm\n";   # propagate unexpected errors
        # timed out
    }
    else {
        # didn't
    }

¤µ¤é¤Ê¤ë¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï perlipc ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

atan2 Y,X

-¦Ð¤«¤é¦Ð¤ÎÈÏ°Ï¤Ç Y/X ¤ÎµÕÀµÀܤòÊÖ¤·¤Þ¤¹¡£

ÀµÀܤòµá¤á¤¿¤¤¤È¤­¤Ï¡¢Math::Trig::tan ¤ò»È¤¦¤«¡¢ °Ê²¼¤Î¤è¤¯ÃΤé¤ì¤¿´Ø·¸¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

    sub tan { sin($_[0]) / cos($_[0])  }

atan2(0, 0) ¤Ï̤ÄêµÁ¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

bind SOCKET,NAME

bind(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÈƱÍͤˡ¢¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹¤ò¥½¥±¥Ã¥È¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ À®¸ù»þ¤Ë¤Ï¿¿¤òÊÖ¤·¡¢¼ºÇÔ»þ¤Ë¤Ïµ¶¤òÊÖ¤·¤Þ¤¹¡£ NAME ¤Ï¡¢¥½¥±¥Ã¥È¤ËÂФ¹¤ë¡¢Å¬Àڤʷ¿¤Î¥Ñ¥Ã¥¯¤µ¤ì¤¿¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ Sockets: Client/Server Communication in perlipc ¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

binmode FILEHANDLE, LAYER
binmode FILEHANDLE

¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤È¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ò¶èÊ̤¹¤ë OS ¤Ë¤ª¤¤¤Æ¡¢ FILEHANDLE ¤ò¡Ö¥Ð¥¤¥Ê¥ê¡×¤Þ¤¿¤Ï¡Ö¥Æ¥­¥¹¥È¡×¤ÇÆÉ¤ß½ñ¤­¤¹¤ë¤è¤¦¤Ë »ØÄꤷ¤Þ¤¹¡£ FILEHANDLE ¤¬¼°¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î¼°¤ÎÃͤ¬¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Î ̾Á°¤È¤·¤Æ»È¤ï¤ì¤Þ¤¹¡£

¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ç¤Ê¤¤¤â¤Î¤ò°·¤¦¾ì¹ç¤Ë binmode() ¤¬É¬Í×¤Ê ¥·¥¹¥Æ¥à¤â¤¢¤ê¤Þ¤¹(°ìÈÌŪ¤Ë¤Ï DOS ¤È Windows ¥Ù¡¼¥¹¤Î¥·¥¹¥Æ¥à¤Ç¤¹)¡£ °Ü¿¢À­¤Î¤¿¤á¤Ë¡¢Å¬ÀڤʤȤ­¤Ë¤Ï¾ï¤Ë¤³¤ì¤ò»È¤¤¡¢Å¬ÀڤǤʤ¤¤È¤­¤Ë¤Ï ·è¤·¤Æ»È¤ï¤Ê¤¤¤È¤¤¤¦¤Î¤ÏÎɤ¤¹Í¤¨¤Ç¤¹¡£ ¤Þ¤¿¡¢¥Ç¥Õ¥©¥ë¥È¤È¤·¤Æ I/O ¤ò bytes ¤Ç¤Ï¤Ê¤¯ UTF-8 ¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿ Unicode ¤Ë¥»¥Ã¥È¤¹¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£

¸À¤¤´¹¤¨¤ë¤È: ¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ë´Ø¤ï¤é¤º¡¢ Îã¤Î¥¤¥á¡¼¥¸¤Î¤è¤¦¤Ê¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¤Ï binmode() ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

LAYER ¤¬Â¸ºß¤¹¤ë¤È¡¢¤½¤ì¤Ïñ°ì¤Îʸ»úÎó¤Ç¤¹¤¬¡¢Ê£¿ô¤Î»Ø¼¨»Ò¤ò ´Þ¤à¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ »Ø¼¨»Ò¤Ï¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Î¿¶¤ëÉñ¤¤¤òÊѹ¹¤·¤Þ¤¹¡£ LAYER ¤¬Â¸ºß¤¹¤ë¤È¡¢¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Ç¤Î binmode ¤¬°ÕÌ£¤ò»ý¤Á¤Þ¤¹¡£

LAYER ¤¬¾Êά¤µ¤ì¤¿¤ê¡¢:raw ¤¬»ØÄꤵ¤ì¤ë¤È¡¢¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ï¥Ð¥¤¥Ê¥ê ¥Ç¡¼¥¿¤ÎÄ̲á¤ËŬ¤¹¤ë¤è¤¦¤ËÀßÄꤵ¤ì¤Þ¤¹¡£ ¤³¤ì¤Ë¤Ï CRLF ÊÑ´¹¤ò¥ª¥Õ¤Ë¤·¤¿¤ê¡¢¤½¤ì¤¾¤ì¤ò(Unicode ʸ»ú¤Ç¤Ï¤Ê¤¯) ¥Ð¥¤¥È¤Ç¤¢¤ë¤È¥Þ¡¼¥¯¤·¤¿¤ê¤¹¤ë¤³¤È¤ò´Þ¤ß¤Þ¤¹¡£ "¥×¥í¥°¥é¥ß¥ó¥° Perl"(¥é¥¯¥ÀËÜ) ¤ä¤½¤Î¾¤Ç°Å¼¨¤µ¤ì¤Æ¤¤¤ë¤Ë¤â´Ø¤ï¤é¤º¡¢ :raw ¤Ïñ¤Ê¤ë :crlf ¤Î µÕ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó -- ¥¹¥È¥ê¡¼¥à¤Î ¥Ð¥¤¥Ê¥ê¤È¤·¤Æ¤ÎÀ­¼Á¤Ë±Æ¶Á¤òÍ¿¤¨¤ë ¤½¤Î¾¤ÎÁؤâ̵¸ú¤Ë¤µ¤ì¤Þ¤¹¡£ PerlIO, perlrun ¤ª¤è¤ÓPERLIO ´Ä¶­ÊÑ¿ô¤Ë´Ø¤¹¤ëµÄÏÀ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

:bytes, :crlf, and :utf8, µÚ¤Ó¤½¤Î¾¤Î :... ·Á¼°¤Î»Ø¼¨»Ò¤Ï I/O ÁØ ¤¬¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ open ¥×¥é¥°¥Þ¤Ï¥Ç¥Õ¥©¥ë¥È I/O Áؤò»ØÄꤹ¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹¡£ open ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

binmode() ´Ø¿ô¤Î LAYER ¥Ñ¥é¥á¡¼¥¿¤Ï ¡Ö¥×¥í¥°¥é¥ß¥ó¥°Perl Âè3ÈÇ¡×¤Ç¤Ï ¡Ö¥Ç¥£¥·¥×¥ê¥ó(DISCIPLINE)¡×¤Èɽ¸½¤µ¤ì¤Æ¤¤¤Þ¤·¤¿¡£ ¤·¤«¤·¡¢¡Ö¥é¥¯¥ÀËÜÂè3ÈǡפȤ·¤ÆÃΤé¤ì¤Æ¤¤¤ë¤³¤ÎËܤνÐÈǸ塢¤³¤Îµ¡Ç½¤Î̾Á°¤Ï ¡Ö¥Ç¥£¥·¥×¥ê¥ó¡×¤«¤é¡ÖÁءפËÊѹ¹¤¹¤ë¤³¤È¤Ç¹ç°Õ¤µ¤ì¤Þ¤·¤¿¡£ ½¾¤Ã¤Æ¡¢¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Î Perl ¤ÎÁ´¤Æ¤Îʸ½ñ¤Ç¤Ï¡Ö¥Ç¥£¥·¥×¥ê¥ó¡×¤Ç¤Ï¤Ê¤¯ ¡ÖÁءפȵ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Ç¤ÏÄ̾ï¤Î²òÀâ¤ËÌá¤ê¤Þ¤¹¡Ä¡£

FILEHANDLE ¤¬ UTF-8 ¤Ç¤¢¤ë¤È¤¤¤¦¥Þ¡¼¥¯¤ò¤Ä¤±¤ë¤Ë¤Ï¡¢:utf8 ¤« :encoding(utf8) ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ :utf8 ¤Ï¡¢¤µ¤é¤Ê¤ë¥Á¥§¥Ã¥¯¤Ê¤·¤Ë¥Ç¡¼¥¿¤¬ UTF-8 ¤È¤·¤Æ¥Þ¡¼¥¯¤·¤Þ¤¹¤¬¡¢ :encoding(utf8) ¤Ï¥Ç¡¼¥¿¤¬¼ÂºÝ¤ËÍ­¸ú¤Ê UTF-8 ¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£ ¤µ¤é¤Ê¤ë¾ÜºÙ¤Ï PerlIO::encoding ¤Ë¤¢¤ê¤Þ¤¹¡£

°ìÈÌŪ¤Ë binmode() ¤Ï open() ¤ò¸Æ¤Ó½Ð¤·¤¿¸å¡¢¤³¤Î¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ËÂФ¹¤ë I/O Áàºî¤ò¤¹¤ëÁ°¤Ë¸Æ¤Ó½Ð¤¹¤Ù¤­¤Ç¤¹¡£ binmode() ¤ò¸Æ¤Ó½Ð¤¹¤È¡¢ÉáÄ̤Ϥ³¤Î¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ËÂФ·¤Æ ¥Ð¥Ã¥Õ¥¡¥ê¥ó¥°¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î½ÐÎϥǡ¼¥¿ (¤ª¤è¤Ó¤ª¤½¤é¤¯¤ÏÆþÎϥǡ¼¥¿)¤ò¥Õ¥é¥Ã¥·¥å¤·¤Þ¤¹¡£ Îã³°¤Ï¡¢¤³¤Î¥Ï¥ó¥É¥ë¤ËÂФ¹¤ë¥Ç¥Õ¥©¥ë¥Èʸ»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤òÊѹ¹¤¹¤ë :encoding ÁؤǤ¹; open ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ :encoding Áؤϥ¹¥È¥ê¡¼¥à¤ÎÅÓÃæ¤Ç¸Æ¤Ó½Ð¤¹É¬Íפ¬¤¢¤ë¤³¤È¤¬¤¢¤ê¡¢ ¤½¤ì¤Ë¤è¤Ã¤Æ¥¹¥È¥ê¡¼¥à¤Ï¥Õ¥é¥Ã¥·¥å¤µ¤ì¤Þ¤»¤ó¡£ Perl ¤ÏÆâÉô¤Ç UTF-8 ¥¨¥ó¥³¡¼¥É¤µ¤ì¤¿ Unicode ʸ»ú¤òÁàºî¤·¤Æ¤¤¤ë¤Î¤Ç¡¢ :encoding ¤Ï°ÅÌۤΤ¦¤Á¤Ë¼«¿È¤ò :utf8 Áؤξå¤Ë²¡¤·¾å¤²¤Þ¤¹¡£

¥ª¥Ú¥ì¡¼¥·¥ç¥ó¥·¥¹¥Æ¥à¡¢¥Ç¥Ð¥¤¥¹¥É¥é¥¤¥Ð¡¢C ¥é¥¤¥Ö¥é¥ê¡¢ Perl ¥é¥ó¥¿¥¤¥à¥·¥¹¥Æ¥à¤ÏÁ´¤Æ¡¢¥×¥í¥°¥é¥Þ¤¬³°Éôɽ¸½¤Ë´Ø¤ï¤é¤º 1 ʸ»ú (\n) ¤ò¹Ô½ªÃ¼¤È¤·¤Æ°·¤¨¤ë¤è¤¦¤Ë¶¨Ä´ºî¶È¤·¤Þ¤¹¡£ ¿¤¯¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥Í¥¤¥Æ¥£¥Ö¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ëɽ¸½¤Ï ÆâÉôɽ¸½¤ÈƱ¤¸¤Ç¤¹¤¬¡¢\n ¤Î³°Éôɽ¸½¤¬Ê£¿ôʸ»ú¤Ë¤Ê¤ë ¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤â¤¢¤ê¤Þ¤¹¡£

Mac OS¡¢Á´¤Æ¤Î Unix ·Ï¡¢VMS ¤Î Stream_LF ¥Õ¥¡¥¤¥ë¤Ï ¥Æ¥­¥¹¥È¤Î³°Éôɽ¸½¤È¤·¤Æ³Æ¹Ô¤ÎËöÈø¤Ë 1 ¤Ä¤Îʸ»ú¤ò »È¤Ã¤Æ¤¤¤Þ¤¹(¤½¤Îʸ»ú¤Ï Mac OS ¤Ç¤ÏÉüµ¢¤Ç¡¢ Unix ¤È¤Û¤È¤ó¤É¤ÎVMS ¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï²þ¹Ô¤Ç¤¹)¡£ VMS, MS-DOS, MS-Windows ·Ï¤È¤¤¤Ã¤¿¤½¤Î¾¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ ¥×¥í¥°¥é¥à¤«¤é¤Ï \n ¤Ïñ½ã¤Ë \cJ ¤Ë¸«¤¨¤Þ¤¹¤¬¡¢ ¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤È¤·¤ÆÊݸ¤µ¤ì¤ë¾ì¹ç¤Ï \cM\cJ ¤Î 2 ʸ»ú¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤Ä¤Þ¤ê¡¢¤â¤·¤³¤ì¤é¤Î¥·¥¹¥Æ¥à¤Ç binmode() ¤ò»È¤ï¤Ê¤¤¤È¡¢ ¥Ç¥£¥¹¥¯¾å¤Î \cM\cJ ¤È¤¤¤¦ÊÂ¤Ó¤ÏÆþÎÏ»þ¤Ë \n ¤ËÊÑ´¹¤µ¤ì¡¢ ¥×¥í¥°¥é¥à¤¬½ÐÎϤ·¤¿Á´¤Æ¤Î \n ¤Ï \cM\cJ ¤ËµÕÊÑ´¹¤µ¤ì¤Þ¤¹¡£ ¤³¤ì¤Ï¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¤Ï»×¤¤Ä̤ê¤Î·ë²Ì¤Ç¤·¤ç¤¦¤¬¡¢ ¥Ð¥¤¥Ê¥ê¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¤ÏÈá»´¤Ç¤¹¡£

binmode() ¤ò(¤¤¤¯¤Ä¤«¤Î¥·¥¹¥Æ¥à¤Ç)»È¤¦¤³¤È¤Ë¤è¤ë¤½¤Î¾¤ÎºîÍѤȤ·¤Æ¤Ï¡¢ ÆÃÊ̤ʥե¡¥¤¥ë½ªÃ¼¥Þ¡¼¥«¡¼¤¬¥Ç¡¼¥¿¥¹¥È¥ê¡¼¥à¤Î°ìÉô¤È¤·¤Æ ¸«¤é¤ì¤ë¤³¤È¤Ç¤¹¡£ Microsoft ¥Õ¥¡¥ß¥ê¡¼¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢binmode() ¤ò»È¤Ã¤Æ¤¤¤Ê¤¤¤È ¤â¤·¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ë \cZ ¤¬´Þ¤Þ¤ì¤Æ¤¤¤¿¤È¤­¤Ë¡¢I/O ¥µ¥Ö¥·¥¹¥Æ¥à¤¬ ¤³¤ì¤ò¥Õ¥¡¥¤¥ë½ªÃ¼¤È¤ß¤Ê¤¹¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£

binmode() ¤Ï readline() ¤È print() Áàºî¤Ë¤À¤±¤Ç¤Ï¤Ê¤¯¡¢ read(), seek(), sysread(), syswrite(), tell() ¤ò»È¤¦¤È¤­¤Ë¤â½ÅÍפǤ¹ (¾ÜºÙ¤Ï perlport ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£ Æþ½ÐÎϤιÔüËö¥·¡¼¥±¥ó¥¹¤ò¼êư¤Ç¥»¥Ã¥È¤¹¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï perlvar ¤Î $/ ÊÑ¿ô¤È $\ ÊÑ¿ô¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

bless REF,CLASSNAME
bless REF

¤³¤Î´Ø¿ô¤Ï¡¢REF ¤ÇÅϤµ¤ì¤¿ ¥ª¥Ö¥¸¥§¥¯¥È¤ËÂФ·¡¢ CLASSNAME Æâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¤Ê¤Ã¤¿¤³¤È¤òÅÁ¤¨¤Þ¤¹¡£ CLASSNAME ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢¤½¤Î»þÅÀ¤Î¥Ñ¥Ã¥±¡¼¥¸¤È¤Ê¤ê¤Þ¤¹¡£ bless ¤ÏÄ̾¥³¥ó¥¹¥È¥é¥¯¥¿¤ÎºÇ¸å¤ËÃÖ¤«¤ì¤Þ¤¹¤Î¤Ç¡¢ ´ÊÊØ¤Î¤¿¤á¤Ë¤½¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤òÊÖ¤·¤Þ¤¹¡£ ÇÉÀ¸¥¯¥é¥¹¤¬ bless ¤µ¤ì¤ë´Ø¿ô¤ò·Ñ¾µ¤¹¤ë¾ì¹ç¤Ï¡¢ ¾ï¤Ë 2 °ú¿ôÈǤò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ ¥ª¥Ö¥¸¥§¥¯¥È¤Î bless (¤äºÆ bless) ¤Ë¤Ä¤¤¤Æ¡¢ ¾Ü¤·¤¯¤Ï perltoot ¤È perlobj ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Âçʸ»ú¾®Ê¸»ú¤¬º®¤¸¤Ã¤Æ¤¤¤ë CLASSNAME ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ï¾ï¤Ë bless ¤¹¤ë¤³¤È¤ò ¹Íθ¤·¤Æ¤¯¤À¤µ¤¤¡£ Á´¤Æ¾®Ê¸»ú¤Î̾Á°¤ò»ý¤Ä̾Á°¶õ´Ö¤Ï Perl ¥×¥é¥°¥Þ¤Î¤¿¤á¤ËͽÌó¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ÁȤ߹þ¤ß¤Î·¿¤ÏÁ´¤ÆÂçʸ»ú¤Î̾Á°¤ò»ý¤Á¤Þ¤¹¡£ º®Íð¤òÈò¤±¤ë¤¿¤á¤Ë¡¢ ¥Ñ¥Ã¥±¡¼¥¸Ì¾¤È¤·¤Æ¤³¤Î¤è¤¦¤Ê̾Á°¤ÏÈò¤±¤ë¤Ù¤­¤Ç¤¹¡£ CLASSNAME ¤Ï¿¿¤ÎÃͤò»ý¤Ä¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£

Perl Modules in perlmod ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

break

given() ¥Ö¥í¥Ã¥¯¤«¤éæ½Ð¤·¤Þ¤¹¡£

¤³¤Î¥­¡¼¥ï¡¼¥É¤Ï "switch" µ¡Ç½¤Ë¤è¤Ã¤ÆÍ­¸ú¤Ë¤Ê¤ê¤Þ¤¹: ¤µ¤é¤Ê¤ë¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï feature ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

caller EXPR
caller

¤½¤Î»þÅÀ¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¸Æ¤Ó½Ð¤·¤Î¥³¥ó¥Æ¥­¥¹¥È¤òÊÖ¤·¤Þ¤¹¡£ ¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢¸Æ¤Ó¸µ¤¬¤¢¤ë¾ì¹ç (¥µ¥Ö¥ë¡¼¥Á¥ó¡¢eval¡¢require ¤ÎÃæ¤Ë¤¤¤ë¤È¤­) ¤Ë¤Ï ¸Æ¤Ó½Ð¤·¸µ¤Î¥Ñ¥Ã¥±¡¼¥¸Ì¾¤òÊÖ¤·¡¢¤½¤Î¾¤Î¤È¤­¤Ë¤Ï̤ÄêµÁÃͤòÊÖ¤·¤Þ¤¹¡£ ¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢°Ê²¼¤òÊÖ¤·¤Þ¤¹:

    # 0         1          2
    ($package, $filename, $line) = caller;

EXPR ¤òÉÕ¤±¤ë¤È¡¢¥Ç¥Ð¥Ã¥¬¤¬¥¹¥¿¥Ã¥¯¥È¥ì¡¼¥¹¤òɽ¼¨¤¹¤ë¤¿¤á¤Ë»È¤¦¾ðÊó¤òÊÖ¤·¤Þ¤¹¡£ EXPR ¤ÎÃͤϡ¢¸½¾õ¤«¤é¿ô¤¨¤Æ¡¢ ¤¤¤¯¤ÄÁ°¤Î¥³¡¼¥ë¥Õ¥ì¡¼¥à¤Þ¤ÇÌá¤ë¤«¤ò¼¨¤·¤Þ¤¹¡£

    #  0         1          2      3            4
    ($package, $filename, $line, $subroutine, $hasargs,
    #  5          6          7            8       9         10
    $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash)
     = caller($i);

¤³¤³¤Ç¥Õ¥ì¡¼¥à¤¬¥µ¥Ö¥ë¡¼¥Á¥ó¸Æ¤Ó½Ð¤·¤Ç¤Ê¤¤¾ì¹ç¡¢eval ¤Ç¤Ï¤Ê¤¯ (eval) ¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤³¤Î¾ì¹ç¡¢ÄɲäÎÍ×ÁǤǤ¢¤ë $evaltext ¤È $is_require ¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤¹: $is_require ¤Ï¥Õ¥ì¡¼¥à¤¬ require ¤Þ¤¿¤Ï use ¤Çºî¤é¤ì¤¿¾ì¹ç¤Ë ¿¿¤Ë¤Ê¤ê¡¢$evaltext ¤Ï eval EXPR ¤Î¥Æ¥­¥¹¥È¤¬Æþ¤ê¤Þ¤¹¡£ ÆÃ¤Ë¡¢eval BLOCK ¤Î¾ì¹ç¡¢$subroutine ¤Ï (eval) ¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢ $evaltext ¤Ï̤ÄêµÁÃͤˤʤê¤Þ¤¹¡£ (¤½¤ì¤¾¤ì¤Î use ¤Ï eval EXPR ¤ÎÃæ¤Ç require ¥Õ¥ì¡¼¥à¤òºî¤ë¤³¤È¤Ë Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£) $subroutine ¤Ï¡¢¤½¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤¬¥·¥ó¥Ü¥ë¥Æ¡¼¥Ö¥ë¤«¤éºï½ü¤µ¤ì¤¿¾ì¹ç¤Ï (unknown) ¤Ë¤Ê¤ê¤Þ¤¹¡£ $hasargs ¤Ï¤³¤Î¥Õ¥ì¡¼¥àÍÑ¤Ë @_ ¤Î¿·¤·¤¤¼ÂÂΤ¬ÀßÄꤵ¤ì¤¿¾ì¹ç¤Ë¿¿¤È¤Ê¤ê¤Þ¤¹¡£ $hints ¤È $bitmask ¤Ï caller ¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿¤È¤­¤Î ¼ÂºÝŪ¤Ê¥Ò¥ó¥È¤ò´Þ¤ß¤Þ¤¹¡£ $hints ¤Ï $bitmask ¤Ï Perl ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤Ã¤ÆÊѹ¹¤µ¤ì¤ë ²ÄǽÀ­¤¬¤¢¤ë¤Î¤Ç¡¢³°Éô¤Ç¤Î»ÈÍѤòÁÛÄꤷ¤Æ¤¤¤Þ¤»¤ó¡£

$hinthash ¤Ï¡¢caller ¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤¿»þ¤Î %^H ¤ÎÃͤò´Þ¤à ¥Ï¥Ã¥·¥å¤Ø¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤«¡¢¤¢¤ë¤¤¤Ï %^H ¤¬¶õ¤Î¾ì¹ç¤Ï undef ¤Ç¤¹¡£ ¤³¤Î¥Ï¥Ã¥·¥å¤ÎÃͤϹ½Ê¸ÌÚ¤ËÊݴɤµ¤ì¤Æ¤¤¤ë¼ÂºÝ¤ÎÃͤʤΤǡ¢Êѹ¹¤·¤Ê¤¤¤Ç²¼¤µ¤¤¡£

¤µ¤é¤Ë¡¢DB ¥Ñ¥Ã¥±¡¼¥¸¤ÎÃæ¤«¤é¸Æ¤Ð¤ì¤¿¾ì¹ç¤Ï¡¢caller ¤Ï ¤è¤ê¾ÜºÙ¤Ê¾ðÊó¤òÊÖ¤·¤Þ¤¹¡£ ¥µ¥Ö¥ë¡¼¥Á¥ó¤¬µ¯Æ°¤µ¤ì¤¿¤È¤­¤Î°ú¿ô¤òÊÑ¿ô @DB::args ¤ËÀßÄꤷ¤Þ¤¹¡£

caller ¤¬¾ðÊó¤òÆÀ¤ëÁ°¤Ë¥ª¥×¥Æ¥£¥Þ¥¤¥¶¤¬¸Æ¤Ó½Ð¤·¥Õ¥ì¡¼¥à¤òºÇŬ²½¤·¤Æ ¤·¤Þ¤¦¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤ì¤Ï¡¢caller(N) ¤¬ N > 1 ¤Î¤È¤­¡¢ ¤¢¤Ê¤¿¤¬Í½Â¬¤·¤¿¸Æ¤Ó½Ð¤·¥Õ¥ì¡¼¥à¤Î¾ðÊó¤òÊÖ¤µ¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ ÆÃ¤Ë¡¢@DB::args ¤Ï caller ¤¬Á°²ó¸Æ¤Ó½Ð¤µ¤ì¤¿»þ¤Î¾ðÊó¤ò »ý¤Ã¤Æ¤¤¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

chdir EXPR
chdir FILEHANDLE
chdir DIRHANDLE
chdir

(²Äǽ¤Ç¤¢¤ì¤Ð¡¢) ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤ò EXPR ¤Ë°Ü¤·¤Þ¤¹¡£ EXPR ¤ò»ØÄꤷ¤Ê¤¤¤È¡¢$ENV{HOME} ¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢ ¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤ê¤Þ¤¹¡£ ¤½¤¦¤Ç¤Ê¤¯¡¢$ENV{LOGDIR}¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ì¤Ð¡¢¤½¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Ë°Ü¤ê¤Þ¤¹¡£ (VMS ¤Ç¤Ï $ENV{SYS$LOGIN} ¤â¥Á¥§¥Ã¥¯¤µ¤ì¡¢¤â¤·¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ì¤Ð»È¤ï¤ì¤Þ¤¹¡£) ¤É¤Á¤é¤âÀßÄꤵ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢chdir ¤Ï²¿¤â¤·¤Þ¤»¤ó¡£ À®¸ù»þ¤Ë¤Ï¿¿¤òÊÖ¤·¡¢¤½¤¦¤Ç¤Ê¤±¤ì¤Ðµ¶¤òÊÖ¤·¤Þ¤¹¡£ die ¤Î¹à¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

fchdir ¤ËÂбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ä¥Ç¥£¥ì¥¯¥È¥ê¥Ï¥ó¥É¥ë¤ò °ú¿ô¤È¤·¤ÆÅϤ»¤Þ¤¹¡£ fchdir ¤ËÂбþ¤·¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥Ï¥ó¥É¥ë¤òÅϤ¹¤È¼Â¹Ô»þ¤Ë Ã×̿Ū¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£

chmod LIST

LIST ¤Ë´Þ¤Þ¤ì¤ë¥Õ¥¡¥¤¥ë¤Î¡¢¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤òÊѹ¹¤·¤Þ¤¹¡£ LIST ¤ÎºÇ½é¤ÎÍ×ÁǤϡ¢¿ôÃÍɽ¸½¤Î¥â¡¼¥É¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ 0644 ¤Ï OK ¤Ç¤¹¤¬¡¢ '0644' ¤Ï¤À¤á¤Ç¤¹¡£ Êѹ¹¤ËÀ®¸ù¤·¤¿¥Õ¥¡¥¤¥ë¤Î¿ô¤òÊÖ¤·¤Þ¤¹¡£ ʸ»úÎó¤ò»È¤¤¤¿¤¤¾ì¹ç¤Ï¡¢oct ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

    $cnt = chmod 0755, 'foo', 'bar';
    chmod 0755, @executables;
    $mode = '0644'; chmod $mode, 'foo';      # !!! sets mode to
                                             # --w----r-T
    $mode = '0644'; chmod oct($mode), 'foo'; # this is better
    $mode = 0644;   chmod $mode, 'foo';      # this is best

fchmod ¤ËÂбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ò°ú¿ô¤È¤·¤ÆÅϤ»¤Þ¤¹¡£ fchmod ¤ËÂбþ¤·¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤òÅϤ¹¤È¼Â¹Ô»þ¤Ë Ã×̿Ū¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤òǧ¼±¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢¥°¥í¥Ö¤Þ¤¿¤Ï¥ê¥Õ¥¡¥ì¥ó¥¹¤È¤·¤Æ ÅϤµ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ Íç¤Îñ¸ì¤Ï¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£

    open(my $fh, "<", "foo");
    my $perm = (stat $fh)[2] & 07777;
    chmod($perm | 0600, $fh);

¥·¥ó¥Ü¥ê¥Ã¥¯¤Ê S_I* Äê¿ô¤ò Fcntl ¥â¥¸¥å¡¼¥ë¤«¤é¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

    use Fcntl ':mode';
    chmod S_IRWXU|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, @executables;
    # This is identical to the chmod 0755 of the above example.
chomp VARIABLE
chomp( LIST )
chomp

¤è¤ê°ÂÁ´¤Ê chop (°Ê²¼¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤) ¤Ç¤¹¡£ $/ (English ¥â¥¸¥å¡¼¥ë¤Ç¤Ï¡¢$INPUT_RECORD_SEPARATOR ¤È¤â¸À¤¦) ¤Î¤½¤Î»þÅÀ¤ÎÃͤËÂбþ¤¹¤ë¹ÔËöʸ»ú¤òºï½ü¤·¤Þ¤¹¡£ Á´¤Æ¤Î°ú¿ô¤«¤éºï½ü¤·¤¿Ê¸»ú¿ô¤Î¹ç·×¤òÊÖ¤·¤Þ¤¹¡£ ÆþÎϥ쥳¡¼¥É¤«¤é¡¢²þ¹Ô¤òºï½ü¤·¤¿¤¤¤Î¤À¤±¤ì¤É¡¢ºÇ¸å¤Î¥ì¥³¡¼¥É¤Ë¤Ï²þ¹Ô¤¬ Æþ¤Ã¤Æ¤¤¤ë¤Î¤«¤ï¤«¤é¤Ê¤¤¤è¤¦¤Ê¾ì¹ç¤Ë¡¢»ÈÍѤǤ­¤Þ¤¹¡£ ÃÊÍî¥â¡¼¥É ($/ = "") ¤Ç¤Ï¡¢¥ì¥³¡¼¥É¤ÎºÇ¸å¤Î²þ¹Ô¤ò¤¹¤Ù¤Æ¼è¤ê½ü¤­¤Þ¤¹¡£ µÛ¤¤¹þ¤ß¥â¡¼¥É ($/ = undef) ¤ä ¸ÇÄêĹ¥ì¥³¡¼¥É¥â¡¼¥É ($/ ¤¬À°¿ô¤Ø¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤äÎà»÷¤Î¤â¤Î¤Î¾ì¹ç¡£perlvar¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤) ¤Ç¤Ï¡¢chomp() ¤Ï²¿¤â¼è¤ê½ü¤­¤Þ¤»¤ó¡£ VARIABLE ¤¬¾Êά¤µ¤ì¤ë¤È¡¢$_ ¤òÂоݤȤ·¤Æ chomp ¤·¤Þ¤¹¡£ Îã:

    while (<>) {
        chomp;  # avoid \n on last field
        @array = split(/:/);
        # ...
    }

VARIABLE ¤¬¥Ï¥Ã¥·¥å¤Ê¤é¡¢¥Ï¥Ã¥·¥å¤Î¥­¡¼¤Ç¤Ï¤Ê¤¯ÃͤˤĤ¤¤Æ chomp ¤·¤Þ¤¹¡£

º¸ÊÕÃͤǤ¢¤ì¤Ð¡¢ÂåÆþ¤ò´Þ¤á¤Æ¡¢Ç¤°Õ¤Î¤â¤Î¤ò chomp ¤Ç¤­¤Þ¤¹:

    chomp($cwd = `pwd`);
    chomp($answer = <STDIN>);

¥ê¥¹¥È¤ò chomp ¤¹¤ë¤È¡¢¸Ä¡¹¤ÎÍ×ÁǤ¬ chomp ¤µ¤ì¡¢ ºï½ü¤µ¤ì¤¿Ê¸»ú¿ô¤Î¹ç·×¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£

ñ½ã¤ÊÊÑ¿ô°Ê³°¤Î¤â¤Î¤ò chomp ¤¹¤ë¾ì¹ç¤Ï¤«¤Ã¤³¤¬É¬ÍפǤ¢¤ë¤³¤È¤Ë Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤ì¤Ï¡¢chomp $cwd = `pwd`; ¤Ï¡¢Í½Â¬¤·¤Æ¤¤¤ë chomp( $cwd = `pwd` ) ¤Ç¤Ï¤Ê¤¯¡¢(chomp $cwd) = `pwd`; ¤È ²ò¼á¤µ¤ì¤ë¤«¤é¤Ç¤¹¡£ ƱÍͤˡ¢chomp $a, $b ¤Ç¤Ï¤Ê¤¯¡¢chomp($a, $b) chomp($a), $b ¤È ²ò¼á¤µ¤ì¤Þ¤¹¡£

chop VARIABLE
chop( LIST )
chop

ʸ»úÎó¤ÎºÇ¸å¤Îʸ»ú¤òÀÚ¤ê¼Î¤Æ¤Æ¡¢¤½¤ÎÀÚ¤ê¼è¤Ã¤¿Ê¸»ú¤òÊÖ¤·¤Þ¤¹¡£ ʸ»úÎó¤Î¸¡º÷¤â¥³¥Ô¡¼¤â¹Ô¤Ê¤¤¤Þ¤»¤ó¤Î¤Ç s/\n// ¤è¤ê¤â¡¢¤º¤Ã¤È¸úΨŪ¤Ç¤¹¡£ VARIABLE ¤¬¾Êά¤µ¤ì¤ë¤È¡¢$_ ¤òÂоݤȤ·¤Æ chop ¤·¤Þ¤¹¡£ VARIABLE ¤¬¥Ï¥Ã¥·¥å¤Î¾ì¹ç¡¢¥Ï¥Ã¥·¥å¤Î value ¤ò chop ¤·¤Þ¤¹¤¬¡¢ key ¤Ï chop ¤·¤Þ¤»¤ó¡£

¼ÂºÝ¤Î¤È¤³¤í¡¢ÂåÆþ¤ò´Þ¤àº¸ÊÕÃͤȤʤꤦ¤ë¤Ê¤ó¤Ç¤â chop ¤Ç¤­¤Þ¤¹¡£

¥ê¥¹¥È¤ò chop ¤¹¤ë¤È¡¢¸Ä¡¹¤ÎÍ×ÁǤ¬ chop ¤µ¤ì¤Þ¤¹¡£ ºÇ¸å¤Î chop ¤ÎÃͤÀ¤±¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£

chop ¤ÏºÇ¸å¤Îʸ»ú¤òÊÖ¤¹¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ºÇ¸å°Ê³°¤ÎÁ´¤Æ¤Îʸ»ú¤òÊÖ¤¹¤¿¤á¤Ë¤Ï¡¢substr($string, 0, -1) ¤ò »È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

chomp ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

chown LIST

LIST ¤Ë´Þ¤Þ¤ì¤ë¥Õ¥¡¥¤¥ë¤Î½êÍ­¼Ô (¤È¥°¥ë¡¼¥×) ¤òÊѹ¹¤·¤Þ¤¹¡£ LIST ¤ÎºÇ½é¤Î 2 ¤Ä¤ÎÍ×ÁǤˤϡ¢¿ôÃÍɽ¸½ ¤Î uid ¤È gid ¤ò ¤³¤Î½ç½ø¤ÇÍ¿¤¨¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ ¤É¤Á¤é¤«¤ÎÃͤò -1 ¤Ë¤¹¤ë¤È¡¢¤Û¤È¤ó¤É¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¤½¤ÎÃÍ¤Ï Êѹ¹¤·¤Ê¤¤¤È²ò¼á¤·¤Þ¤¹¡£ Êѹ¹¤ËÀ®¸ù¤·¤¿¥Õ¥¡¥¤¥ë¤Î¿ô¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£

    $cnt = chown $uid, $gid, 'foo', 'bar';
    chown $uid, $gid, @filenames;

fchown ¤ËÂбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ò°ú¿ô¤È¤·¤ÆÅϤ»¤Þ¤¹¡£ fchown ¤ËÂбþ¤·¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤òÅϤ¹¤È¼Â¹Ô»þ¤Ë Ã×̿Ū¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤òǧ¼±¤µ¤»¤ë¤¿¤á¤Ë¤Ï¡¢¥°¥í¥Ö¤Þ¤¿¤Ï¥ê¥Õ¥¡¥ì¥ó¥¹¤È¤·¤Æ ÅϤµ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ Íç¤Îñ¸ì¤Ï¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ°·¤ï¤ì¤Þ¤¹¡£

passwd ¥Õ¥¡¥¤¥ë¤«¤é¿ôÃÍɽ¸½¤Ç¤Ê¤¤ uid ¤ò¸¡º÷¤¹¤ëÎã¤ò ¼¨¤·¤Þ¤¹:

    print "User: ";
    chomp($user = <STDIN>);
    print "Files: ";
    chomp($pattern = <STDIN>);
    ($login,$pass,$uid,$gid) = getpwnam($user)
        or die "$user not in passwd file";
    @ary = glob($pattern);      # expand filenames
    chown $uid, $gid, @ary;

¤Û¤È¤ó¤É¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¡¼¤À¤±¤¬¥Õ¥¡¥¤¥ë¤Î½êÍ­¼Ô¤ò Êѹ¹¤Ç¤­¤Þ¤¹¤¬¡¢¥°¥ë¡¼¥×¤Ï¼Â¹Ô¼Ô¤ÎÉû¥°¥ë¡¼¥×¤ËÊѹ¹¤Ç¤­¤ë¤Ù¤­¤Ç¤¹¡£ °ÂÁ´¤Ç¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¤³¤ÎÀ©¸Â¤Ï¤æ¤ë¤á¤é¤ì¤Æ¤¤¤Þ¤¹¡£ ¤·¤«¤·¤³¤ì¤Ï°Ü¿¢À­¤Î¤¢¤ë²¾Äê¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ POSIX ¥·¥¹¥Æ¥à¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ¤³¤Î¾ò·ï¤ò¸¡½Ð¤Ç¤­¤Þ¤¹:

    use POSIX qw(sysconf _PC_CHOWN_RESTRICTED);
    $can_chown_giveaway = not sysconf(_PC_CHOWN_RESTRICTED);
chr NUMBER
chr

ÆÃÄê¤Îʸ»ú¥»¥Ã¥È¤Ç¤Î NUMBER ¤Çɽ¤ï¤µ¤ì¤ëʸ»ú¤òÊÖ¤·¤Þ¤¹¡£ ¤¿¤È¤¨¤Ð¡¢chr(65) ¤Ï ASCII ¤È Unicode ¤ÎξÊý¤Ç "A" ¤È¤Ê¤ê¤Þ¤¹¡£ chr(0x263a) ¤Ï Unicode ¤Î¥¹¥Þ¥¤¥ê¡¼¥Õ¥§¥¤¥¹¤Ç¤¹¡£

Éé¤Î¿ô¤Ï Unicode ¤ÎÃÖ´¹Ê¸»ú (chr(0xfffd)) ¤òÍ¿¤¨¤Þ¤¹¤¬¡¢ bytes ¥×¥é¥°¥Þ¤Î±Æ¶Á²¼¤Ç¤Ï¡¢(integer ¤ËÀÚ¤êµÍ¤á¤é¤ì¤¿)Ãͤβ¼°Ì 8 ¥Ó¥Ã¥È¤¬ »È¤ï¤ì¤Þ¤¹¡£

NUMBER ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¡¢$_ ¤ò»È¤¤¤Þ¤¹¡£

µÕ¤ò¹Ô¤¦¤¿¤á¤Ë¤Ï¡¢ord ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

128 ¤«¤é 255 ¤Þ¤Ç¤Îʸ»ú¤Ï²áµî¤È¤Î¸ß´¹À­¤Î¤¿¤á¤Ë ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï UTF-8 Unicode ¤Ë¥¨¥ó¥³¡¼¥É¤µ¤ì¤Þ¤»¤ó¡£

Unicode ¤Ë¤Ä¤¤¤Æ¤â¤Ã¤ÈÃΤꤿ¤¤¤Ê¤é¡¢perlunicode ¤ò »²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

chroot FILENAME
chroot

Ʊ¤¸Ì¾Á°¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÈƱ¤¸¤³¤È¤ò¤·¤Þ¤¹¡£ ¸½ºß¤Î¥×¥í¥»¥¹µÚ¤Ó»Ò¥×¥í¥»¥¹¤ËÂФ·¤Æ¡¢/¤Ç»Ï¤Þ¤ë¥Ñ¥¹Ì¾¤Ë´Ø¤·¤Æ »ØÄꤵ¤ì¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò¿·¤·¤¤¥ë¡¼¥È¥Ç¥£¥ì¥¯¥È¥ê¤È¤·¤Æ°·¤¤¤Þ¤¹¡£ (¤³¤ì¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤òÊѹ¹¤·¤Þ¤»¤ó¡£¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ï¤½¤Î¤Þ¤Þ¤Ç¤¹)¡£ ¥»¥­¥å¥ê¥Æ¥£¾å¤ÎÍýͳ¤Ë¤è¤ê¡¢¤³¤Î¸Æ¤Ó½Ð¤·¤Ï¥¹¡¼¥Ñ¡¼¥æ¡¼¥¶¡¼¤·¤«¹Ô¤¨¤Þ¤»¤ó¡£ FILENAME ¤ò¾Êά¤¹¤ë¤È¡¢$_ ¤Ø chroot ¤·¤Þ¤¹¡£

close FILEHANDLE
close

FILEHANDLE ¤ËÂбþ¤·¤¿¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ñ¥¤¥×¤ò¥¯¥í¡¼¥º¤·¤Æ¡¢ IO ¥Ð¥Ã¥Õ¥¡¤ò¥Õ¥é¥Ã¥·¥å¤·¡¢¥·¥¹¥Æ¥à¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤ò¥¯¥í¡¼¥º¤·¤Þ¤¹¡£ Áàºî¤¬À®¸ù¤·¡¢PerlIO Áؤ«¤é¥¨¥é¡¼¤¬Êó¹ð¤µ¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¿¿¤òÊÖ¤·¤Þ¤¹¡£ °ú¿ô¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¡¢¸½ºßÁªÂò¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ò¥¯¥í¡¼¥º¤·¤Þ¤¹¡£

¥¯¥í¡¼¥º¤·¤Æ¤¹¤°¤Ë¤Þ¤¿¡¢Æ±¤¸¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ë ÂФ·¤Æ¥ª¡¼¥×¥ó¤ò¹Ô¤Ê¤¦¾ì¹ç¤Ë¤Ï¡¢open ¤¬¼«Æ°Åª¤Ë close ¤ò¹Ô¤Ê¤¤¤Þ¤¹¤Î¤Ç¡¢close FILEHANDLE ¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó (open ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£ ¤¿¤À¤·¡¢ÌÀ¼¨Åª¤Ë¥¯¥í¡¼¥º¤ò¹Ô¤Ê¤Ã¤¿¤È¤­¤Ë¤Î¤ßÆþÎÏ¥Õ¥¡¥¤¥ë¤Î ¹ÔÈÖ¹æ ($.) ¤Î¥ê¥»¥Ã¥È¤¬¹Ô¤Ê¤ï¤ì¡¢open ¤Ë¤è¤Ã¤Æ¹Ô¤Ê¤ï¤ì¤ë °ÅÌۤΠclose¤Ç¤Ï¹Ô¤Ê¤ï¤ì¤Þ¤»¤ó¡£

¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤¬¥Ñ¥¤¥×¤Ä¤­¥ª¡¼¥×¥ó¤Ê¤é¡¢ close ¤Ï¤½¤Î¾¤Î¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬¼ºÇÔ¤·¤¿¤ê ¥×¥í¥°¥é¥à¤¬Èó¥¼¥í¤Î¥¹¥Æ¡¼¥¿¥¹¤Ç½ªÎ»¤·¤¿¾ì¹ç¤Ë¤âµ¶¤òÊÖ¤·¤Þ¤¹ (¥×¥í¥°¥é¥à¤¬Èó¥¼¥í¤Ç½ªÎ»¤·¤¿¤À¤±¤Î¾ì¹ç¤Ï¡¢$!¤¬0¤Ë¥»¥Ã¥È¤µ¤ì¤Þ¤¹)¡£ ¸å¤Ç¥Ñ¥¤¥×¤Î½ÐÎϤò¸«¤¿¤¤¾ì¹ç¤Î¤¿¤á¤Ë¡¢ ¥Ñ¥¤¥×¤Î¥¯¥í¡¼¥º¤Ç¤Ï¡¢¥Ñ¥¤¥×¾å¤Ç¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë ¥×¥í¥»¥¹¤Î´°Î»¤òÂÔ¤Á¤Þ¤¹¡£ ¤Þ¤¿¼«Æ°Åª¤Ë¥³¥Þ¥ó¥É¤Î¥¹¥Æ¡¼¥¿¥¹Ãͤò $? ¤È ${^CHILD_ERROR_NATIVE} ¤ËÀßÄꤷ¤Þ¤¹¡£

ÅÓÃæ¤Ç(¤Ä¤Þ¤ê¡¢½ñ¤­¹þ¤ß¦¤¬ÊĤ¸¤ëÁ°¤Ë) ¥Ñ¥¤¥×¤ÎÆÉ¤ß¹þ¤ß¦¤¬ÊĤ¸¤¿¾ì¹ç¡¢ ½ñ¤­¹þ¤ß¦¤Ë SIGPIPE ¤¬ÇÛÁ÷¤µ¤ì¤Þ¤¹¡£ ½ñ¤­¹þ¤ß¦¤¬¤³¤ì¤ò°·¤¨¤Ê¤¤¾ì¹ç¡¢¥Ñ¥¤¥×¤òÊĤ¸¤ëÁ°¤Ë ³Î¼Â¤ËÁ´¤Æ¤Î¥Ç¡¼¥¿¤¬ÆÉ¤ß¹þ¤Þ¤ì¤ë¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

Îã:

    open(OUTPUT, '|sort >foo')  # pipe to sort
        or die "Can't start sort: $!";
    #...                        # print stuff to output
    close OUTPUT                # wait for sort to finish
        or warn $! ? "Error closing sort pipe: $!"
                   : "Exit status $? from sort";
    open(INPUT, 'foo')          # get sort's results
        or die "Can't open 'foo' for input: $!";

FILEHANDLE ¤Ï¼°¤Ç¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£¤³¤Î¾ì¹ç¡¢ÃͤϴÖÀÜ¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤È ¤·¤Æ°·¤ï¤ì¡¢ÉáÄ̤ϼºݤΥե¡¥¤¥ë¥Ï¥ó¥É¥ë̾¤Ç¤¹¡£

closedir DIRHANDLE

opendir ¤Ç¥ª¡¼¥×¥ó¤·¤¿¥Ç¥£¥ì¥¯¥È¥ê¤ò¥¯¥í¡¼¥º¤·¡¢ ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÊÖ¤êÃͤòÊÖ¤·¤Þ¤¹¡£

connect SOCKET,NAME

connect(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÈƱÍͤˡ¢¥ê¥â¡¼¥È¥½¥±¥Ã¥È¤Ø¤ÎÀܳ¤ò»î¤ß¤Þ¤¹¡£ À®¸ù»þ¤Ë¤Ï¿¿¤òÊÖ¤·¡¢¼ºÇÔ»þ¤Ë¤Ïµ¶¤òÊÖ¤·¤Þ¤¹¡£ NAME ¤Ï¡¢¥½¥±¥Ã¥È¤ËÂФ¹¤ë¡¢Å¬Àڤʷ¿¤Î¥Ñ¥Ã¥¯¤µ¤ì¤¿ ¥¢¥É¥ì¥¹¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ Sockets: Client/Server Communication in perlipc ¤ÎÎã¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

continue BLOCK
continue

continue ¤Ï¼ÂºÝ¤Ë¤Ï´Ø¿ô¤Ç¤Ï¤Ê¤¯¡¢¼Â¹ÔÀ©¸æÊ¸¤Ç¤¹¡£ continue BLOCK ¤¬ BLOCK (ŵ·¿Åª¤Ë¤Ï while ¤Þ¤¿¤Ï foreach ¤ÎÃæ)¤Ë¤¢¤ë¤È¡¢ ¤³¤ì¤Ï¾ò·ïʸ¤¬ºÆÉ¾²Á¤µ¤ì¤ëľÁ°¤Ë¾ï¤Ë¼Â¹Ô¤µ¤ì¤Þ¤¹¡£ ¤³¤ì¤Ï C ¤Ë¤ª¤±¤ë for ¥ë¡¼¥×¤Î 3 ÈÖÌܤÎÉôʬ¤ÈƱÍͤǤ¹¡£ ½¾¤Ã¤Æ¡¢¤³¤ì¤Ï next ʸ (¤³¤ì¤Ï C ¤Î continue ʸ¤È»÷¤Æ¤¤¤Þ¤¹)¤ò»È¤Ã¤Æ¥ë¡¼¥×¤¬·«¤êÊÖ¤µ¤ì¤ë¤È¤­¤Ç¤â ¥ë¡¼¥×ÊÑ¿ô¤òÁý¤ä¤·¤¿¤¤¤È¤­¤Ë»È¤¨¤Þ¤¹¡£

last, next, redo ¤¬ continue ¥Ö¥í¥Ã¥¯Æâ¤Ë¸½¤ì¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ last ¤È redo ¤Ï¥á¥¤¥ó¥Ö¥í¥Ã¥¯¤ÎÃæ¤Ç¼Â¹Ô¤µ¤ì¤¿¤Î¤ÈƱ¤¸¤è¤¦¤Ë¿¶Éñ¤¤¤Þ¤¹¡£ next ¤Î¾ì¹ç¤Ï¡¢continue ¥Ö¥í¥Ã¥¯¤ò¼Â¹Ô¤¹¤ë¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¡¢ ¤è¤êÌÌÇò¤¤¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

    while (EXPR) {
        ### redo always comes here
        do_something;
    } continue {
        ### next always comes here
        do_something_else;
        # then back the top to re-check EXPR
    }
    ### last always comes here

continue Àá¤ò¾Êά¤¹¤ë¤Î¤Ï¡¢Ê¸Ë¡Åª¤Ë¤Ï¶õ¤ÎÀá¤ò»ØÄꤷ¤¿¤Î¤ÈƱ¤¸¤Ç¡¢ ÏÀÍýŪ¤Ë¤Ï½½Ê¬¤Ç¤¹¡£ ¤³¤Î¾ì¹ç¡¢next ¤ÏľÀܥ롼¥×ÀèÆ¬¤Î¾ò·ï¥Á¥§¥Ã¥¯¤ËÌá¤ê¤Þ¤¹¡£

"switch" µ¡Ç½¤¬Í­¸ú¤Ê¤é¡¢continue ¤Ï¸½ºß¤Î when ¤ä default ¤Î ¥Ö¥í¥Ã¥¯¤«¤éÈô¤Ó½Ð¤·¤Æ¡¢¼¡¤Î¾ì¹ç¤Ë°Üư¤¹¤ë¤¿¤á¤Îʸ¤È¤Ê¤ê¤Þ¤¹¡£ ¤µ¤é¤Ê¤ë¾ðÊó¤Ë¤Ä¤¤¤Æ¤Ï feature ¤È Switch statements in perlsyn ¤ò »²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

cos EXPR
cos

(¥é¥¸¥¢¥ó¤Ç¼¨¤·¤¿) EXPR ¤Î;¸¹¤òÊÖ¤·¤Þ¤¹¡£ EXPR ¤¬¾Êά¤µ¤ì¤¿¤È¤­¤Ë¤Ï¡¢$_ ¤Î;¸¹¤ò¼è¤ê¤Þ¤¹¡£

µÕ;¸¹¤òµá¤á¤ë¤¿¤á¤Ë¤Ï¡¢Math::Trig::acos() ´Ø¿ô¤ò»È¤¦¤«¡¢ °Ê²¼¤Î´Ø·¸¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

    sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
crypt PLAINTEXT,SALT

C ¥é¥¤¥Ö¥é¥ê¤Î crypt(3) ´Ø¿ô¤ÈÁ´¤¯Æ±¤¸¤è¤¦¤Ë¡¢¥À¥¤¥¸¥§¥¹¥Èʸ»úÎó¤ò ºîÀ®¤·¤Þ¤¹(°ì»þŪ¤Êɬ¼ûÉʤȤ·¤Æ¡¢¤Þ¤ÀÀäÌǤ·¤Æ¤¤¤Ê¤¤¥Ð¡¼¥¸¥ç¥ó¤ò »ý¤Ã¤Æ¤¤¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹)¡£

crypt() ¤Ï°ìÊý¸þ¥Ï¥Ã¥·¥å´Ø¿ô¤Ç¤¹¡£ PLAINTEXT ¤È SALT ¤Ï¥À¥¤¥¸¥§¥¹¥È¤È¸Æ¤Ð¤ì¤ëû¤¤Ê¸»úÎó¤ËÊѤ¨¤é¤ì¤Æ¡¢ ¤½¤ì¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ PLAINTEXT ¤È SALT ¤¬Æ±¤¸¾ì¹ç¤Ï¾ï¤ËƱ¤¸Ê¸»úÎó¤òÊÖ¤·¤Þ¤¹¤¬¡¢¥Ï¥Ã¥·¥å¤«¤é ¸µ¤Î PLAINTEXT ¤òÆÀ¤ë(´ûÃΤÎ)ÊýË¡¤Ï¤¢¤ê¤Þ¤»¤ó¡£ PLAINTEXT ¤ä SALT ¤ò¾¯¤·Êѹ¹¤·¤Æ¤â¥À¥¤¥¸¥§¥¹¥È¤ÏÂ礭¤¯Êѹ¹¤µ¤ì¤Þ¤¹¡£

Ê£¹ç²½´Ø¿ô¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¤³¤Î´Ø¿ô¤Ï°Å¹æ²½¤Î¤¿¤á¤Ë¤Ï¤Þ¤Ã¤¿¤¯Ìò¤ËΩ¤Á¤Þ¤»¤ó(¤³¤Î¤¿¤á¤Ë¤Ï¡¢ ¤ª¶á¤¯¤Î CPAN ¥ß¥é¡¼¤Ç Crypt ¥â¥¸¥å¡¼¥ë¤òõ¤·¤Æ¤¯¤À¤µ¤¤)¤Î¤Ç¡¢ "crypt" ¤È¤¤¤¦Ì¾Á°¤Ï¾¯¤·´Ö°ã¤Ã¤¿Ì¾Á°¤Ç¤¹¡£ ¤½¤ÎÂå¤ï¤ê¤Ë¡¢°ìÈÌŪ¤Ë¤ÏÆó¤Ä¤Î¥Æ¥­¥¹¥ÈÊÒ¤¬Æ±¤¸¤«¤É¤¦¤«¤ò¥Æ¥­¥¹¥È¤½¤Î¤â¤Î¤ò žÁ÷¤·¤¿¤êÊݴɤ·¤¿¤ê¤»¤º¤Ë¥Á¥§¥Ã¥¯¤¹¤ë¤¿¤á¤Ë»È¤¤¤Þ¤¹¡£ Îã¤È¤·¤Æ¤Ï¡¢Àµ¤·¤¤¥Ñ¥¹¥ï¡¼¥É¤¬Í¿¤¨¤é¤ì¤¿¤«¤É¤¦¤«¤ò¥Á¥§¥Ã¥¯¤¬¤¢¤ê¤Þ¤¹¡£ ¥Ñ¥¹¥ï¡¼¥É¼«¿È¤Ç¤Ï¤Ê¤¯¡¢¥Ñ¥¹¥ï¡¼¥É¤Î¥À¥¤¥¸¥§¥¹¥È¤¬Êݴɤµ¤ì¤Þ¤¹¡£ ¥æ¡¼¥¶¡¼¤¬¥Ñ¥¹¥ï¡¼¥É¤òÆþÎϤ¹¤ë¤È¡¢Êݴɤµ¤ì¤Æ¤¤¤ë¥À¥¤¥¸¥§¥¹¥È¤ÈƱ¤¸ salt ¤Ç crypt() ¤·¤Þ¤¹¡£ Æó¤Ä¤Î¥À¥¤¥¸¥§¥¹¥È¤¬Æ±¤¸¤Ê¤é¡¢¥Ñ¥¹¥ï¡¼¥É¤ÏÀµ¤·¤¤¤Ç¤¹¡£

¤¹¤Ç¤Ë¤¢¤ë¥À¥¤¥¸¥§¥¹¥Èʸ»úÎó¤ò¸¡¾Ú¤¹¤ë¤Ë¤Ï¡¢¥À¥¤¥¸¥§¥¹¥È¤ò (crypt($plain, $digest) eq $digest ¤Î¤è¤¦¤Ë¤·¤Æ)salt ¤È¤·¤Æ»È¤¤¤Þ¤¹¡£ ¥À¥¤¥¸¥§¥¹¥È¤òºî¤ë¤Î¤Ë»È¤ï¤ì¤¿ SALT ¤Ï¥À¥¤¥¸¥§¥¹¥È¤Î°ìÉô¤È¤·¤Æ¸«¤¨¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤ê¡¢crypt() ¤ÏƱ¤¸ salt ¤Ç¿·¤·¤¤Ê¸»úÎó¤ò¥À¥¤¥¸¥§¥¹¥È¤È¤·¤Æ ¥Ï¥Ã¥·¥å²½¤Ç¤­¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤Ã¤ÆÉ¸½àŪ¤Ê crypt|/crypt ¤ä¡¢¤è¤êÉ÷ÊѤï¤ê¤Ê¼ÂÁõ¤Ç¤âưºî¤·¤Þ¤¹¡£ ¸À¤¤´¹¤¨¤ë¤È¡¢ÊÖ¤µ¤ì¤ëʸ»úÎ󤽤Τâ¤Î¤ä¡¢¥À¥¤¥¸¥§¥¹¥Èʸ»úÎó¤¬ ²¿¥Ð¥¤¥È¤¢¤ë¤«¤È¤¤¤Ã¤¿¤³¤È¤ËÂФ·¤Æ¡¢¤É¤Î¤è¤¦¤Ê²¾Äê¤â¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£

ÅÁÅýŪ¤Ë¤Ï·ë²Ì¤Ï 13 ¥Ð¥¤¥È¤Îʸ»úÎó¤Ç¤¹: ºÇ½é¤Î 2 ¥Ð¥¤¥È¤Ï salt¡¢°ú¤­Â³¤¤¤Æ ½¸¹ç [./0-9A-Za-z] ¤«¤é¤Î 11 ¥Ð¥¤¥È¤Ç¡¢¥À¥¤¥¸¥§¥¹¥Èʸ»úÎó¤ÎºÇ½é¤Î 8 ¥Ð¥¤¥È¤À¤±¤¬°ÕÌ£¤¬¤¢¤ê¤Þ¤¹¤¬¡¢(MD5 ¤Î¤è¤¦¤Ë) °Û¤Ê¤Ã¤¿¥Ï¥Ã¥·¥å¼êË¡¡¢ (C2 ¤Î¤è¤¦¤Ê) ¹â¥ì¥Ù¥ë¥»¥­¥å¥ê¥Æ¥£¼êË¡¡¢Èó UNIX ¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤Ç¤Î ¼ÂÁõ¤Ê¤É¤Ç¤Ï°Û¤Ê¤Ã¤¿Ê¸»úÎó¤¬À¸À®¤µ¤ì¤ë¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£

¿·¤·¤¤ salt ¤òÁªÂò¤¹¤ë¾ì¹ç¤Ï¡¢½¸¹ç [./0-9A-Za-z] ¤«¤é (join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64] ¤Î¤è¤¦¤Ë¤·¤Æ) ¥é¥ó¥À¥à¤Ë2 ¤Ä¤Îʸ»ú¤òÁª¤Ó¤Þ¤¹¡£ ¤³¤Îʸ»ú½¸¹ç¤Ïñ¤Ê¤ë¿äÁ¦¤Ç¤¹; salt ¤È¤·¤Æµö¤µ¤ì¤ëʸ»ú¤Ï¥·¥¹¥Æ¥à¤Î°Å¹æ²½ ¥é¥¤¥Ö¥é¥ê¤À¤±¤Ë°Í¸¤·¡¢Perl ¤Ï crypt() ¤¬¤É¤Î¤è¤¦¤Ê salt ¤ò¼õ¤±ÉÕ¤±¤ë¤«¤Ë ¤Ä¤¤¤ÆÀ©¸Â¤·¤Þ¤»¤ó¡£

¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¿Í¤¬¡¢ ¼«Ê¬¤Î¥Ñ¥¹¥ï¡¼¥É¤òÃΤäƤ¤¤ë¤³¤È¤ò³Îǧ¤¹¤ëÎã¤Ç¤¹:

    $pwd = (getpwuid($<))[1];
    system "stty -echo";
    print "Password: ";
    chomp($word = <STDIN>);
    print "\n";
    system "stty echo";
    if (crypt($word, $pwd) ne $pwd) {
        die "Sorry...\n";
    } else {
        print "ok\n";
    }

¤â¤Á¤í¤ó¡¢¼«Ê¬¼«¿È¤Î¥Ñ¥¹¥ï¡¼¥É¤òï¤Ë¤Ç¤âÆþÎϤ¹¤ë¤Î¤Ï¸­ÌÀ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

crypt ´Ø¿ô¤ÏÂçÎ̤Υǡ¼¥¿¤Î¥Ï¥Ã¥·¥å²½¤Ë¤Ï¸þ¤¤¤Æ¤¤¤Þ¤»¤ó¡£ ¤³¤ì¤Ï¾ðÊó¤òÌ᤻¤Ê¤¤¤È¤¤¤¦Íýͳ¤À¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¤è¤ê´è¶¯¤Ê¥¢¥ë¥´¥ê¥º¥à¤Ë¤Ä¤¤¤Æ¤Ï Digest ¥â¥¸¥å¡¼¥ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

Unicode ʸ»úÎó(ÀøºßŪ¤Ë¤Ï 255 ¤ò±Û¤¨¤ë¥³¡¼¥É¥Ý¥¤¥ó¥È¤ò»ý¤Äʸ»ú¤ò ´Þ¤ß¤Þ¤¹)¤Ë crypt() ¤ò»È¤Ã¤¿¾ì¹ç¡¢Perl ¤Ï crypt() ¤ò¸Æ¤Ó½Ð¤¹Á°¤ËÍ¿¤¨¤é¤ì¤¿ ʸ»úÎó¤ò8 ¥Ó¥Ã¥È¥Ð¥¤¥Èʸ»úÎó¤Ë¥À¥¦¥ó¥°¥ì¡¼¥É¤¹¤ë(ʸ»úÎó¤Î¥³¥Ô¡¼¤òºî¤ë) ¤³¤È¤Ç¾õ¶·¤Î¤Ä¤¸¤Ä¤Þ¤ò¹ç¤ï¤»¤è¤¦¤È¤·¤Þ¤¹¡£ ¤¦¤Þ¤¯Æ°¤±¤Ð¡¢¤½¤ì¤Ç¤è¤·¡£Æ°¤«¤Ê¤±¤ì¤Ð¡¢crypt() ¤Ï Wide character in crypt ¤È¤¤¤¦¥á¥Ã¥»¡¼¥¸¤È¶¦¤Ë die ¤·¤Þ¤¹¡£

dbmclose HASH

[¤³¤Î´Ø¿ô¤Ï¡¢untie ´Ø¿ô¤ËÂ礭¤¯¤È¤Ã¤ÆÂå¤ï¤é¤ì¤Þ¤·¤¿¡£]

DBM ¥Õ¥¡¥¤¥ë¤È¥Ï¥Ã¥·¥å¤ÎÏ¢·ë¤ò¤Ï¤º¤·¤Þ¤¹¡£

dbmopen HASH,DBNAME,MASK

[¤³¤Î´Ø¿ô¤Ï¡¢tie ´Ø¿ô¤ËÂ礭¤¯¤È¤Ã¤ÆÂå¤ï¤é¤ì¤Þ¤·¤¿¡£]

dbm(3), ndbm(3), sdbm(3), gdbm(3) ¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï Berkeley DB ¥Õ¥¡¥¤¥ë¤òÏ¢ÁÛÇÛÎó¤Ë·ë¤ÓÉÕ¤±¤Þ¤¹¡£ HASH ¤Ï¡¢¤½¤ÎÏ¢ÁÛÇÛÎó¤Î̾Á°¤Ç¤¹¡£ (ÉáÄ̤Πopen ¤È¤Ï°ã¤Ã¤Æ¡¢ºÇ½é¤Î°ú¿ô¤Ï¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£¤Þ¤¢¡¢»÷¤¿¤è¤¦¤Ê¤â¤Î¤Ç¤¹¤¬¡£) DBNAME ¤Ï¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î̾Á°¤Ç¤¹ (³ÈÄ¥»Ò¤Î .dir ¤ä .pag ¤Ï¤â¤·¤¢¤Ã¤Æ¤â¤Ä¤±¤Þ¤»¤ó)¡£ ¥Ç¡¼¥¿¥Ù¡¼¥¹¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¢MODE MASK (¤ò umask ¤Ç½¤Àµ¤·¤¿¤â¤Î) ¤Ç »ØÄꤵ¤ì¤¿¥â¡¼¥É¤Çºî¤é¤ì¤Þ¤¹¡£ ¸Å¤¤ DBM ´Ø¿ô¤Î¤ß¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥×¥í¥°¥é¥àÃæ¤Ç 1 ÅÙ¤À¤± dbmopen() ¤ò¼Â¹Ô¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ÀΤΥС¼¥¸¥ç¥ó¤Î Perl ¤Ç¤Ï¡¢DBM ¤â ndbm ¤â»ý¤Ã¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ dbmopen() ¤ò¸Æ¤Ó½Ð¤¹¤ÈÃ×̿Ū¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£ ¸½ºß¤Ç¤Ï sdbm(3) ¤Ë¥Õ¥©¡¼¥ë¥Ð¥Ã¥¯¤·¤Þ¤¹¡£

DBM ¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¡¢½ñ¤­¹þ¤ß¸¢¤¬Ìµ¤¤¤È¤­¤Ë¤Ï¡¢¥Ï¥Ã¥·¥å ÇÛÎó¤òÆÉ¤ß¤À¤¹¤³¤È¤À¤±¤¬¤Ç¤­¡¢ÀßÄꤹ¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ ½ñ¤±¤ë¤«Èݤ«¤òÄ´¤Ù¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë¥Æ¥¹¥È ±é»»»Ò¤ò»È¤¦¤«¡¢¥¨¥é¡¼¤ò¥È¥é¥Ã¥×¤·¤Æ¤¯¤ì¤ë¡¢eval ¤ÎÃæ¤Ç¡¢¥À¥ß¡¼¤Î¥Ï¥Ã¥·¥å¥¨¥ó¥È¥ê¤òÀßÄꤷ¤Æ¤ß¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

Â礭¤Ê DBM ¥Õ¥¡¥¤¥ë¤ò°·¤¦¤È¤­¤Ë¤Ï¡¢keys ¤ä values ¤Î¤è¤¦¤Ê´Ø¿ô¤Ï¡¢ µðÂç¤Ê¥ê¥¹¥È¤òÊÖ¤·¤Þ¤¹¡£ Â礭¤Ê DBM ¥Õ¥¡¥¤¥ë¤Ç¤Ï¡¢each ´Ø¿ô¤ò»È¤Ã¤Æ·«¤êÊÖ¤·¤ò¹Ô¤Ê¤Ã¤¿Êý¤¬ Îɤ¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ Îã:

    # print out history file offsets
    dbmopen(%HIST,'/usr/lib/news/history',0666);
    while (($key,$val) = each %HIST) {
        print $key, ' = ', unpack('L',$val), "\n";
    }
    dbmclose(%HIST);

ÍÍ¡¹¤Ê dbm ¼êË¡¤ËÂФ¹¤ëÍøÅÀ·çÅÀ¤Ë´Ø¤¹¤ë¤è¤ê°ìÈÌŪ¤Êµ­½Ò¤ª¤è¤Ó ÆÃ¤Ë¥ê¥Ã¥Á¤Ê¼ÂÁõ¤Ç¤¢¤ë DB_File ¤Ë´Ø¤·¤Æ¤Ï AnyDBM_File ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

dbmopen() ¤ò¸Æ¤Ó½Ð¤¹Á°¤Ë¥é¥¤¥Ö¥é¥ê¤òÆÉ¤ß¹þ¤à¤³¤È¤Ç¡¢ ¤É¤Î DBM ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¤«¤òÀ©¸æ¤Ç¤­¤Þ¤¹:

    use DB_File;
    dbmopen(%NS_Hist, "$ENV{HOME}/.netscape/history.db")
        or die "Can't open netscape history file: $!";
defined EXPR
defined

º¸ÊÕÃÍ EXPR ¤¬Ì¤ÄêµÁÃÍ undef °Ê³°¤ÎÃͤò»ý¤Ä¤«Èݤ«¤ò¼¨¤¹¡¢¥Ö¡¼¥ëÃͤò ÊÖ¤·¤Þ¤¹¡£ EXPR ¤¬¤Ê¤¤¾ì¹ç¤Ï¡¢$_ ¤¬¥Á¥§¥Ã¥¯¤µ¤ì¤Þ¤¹¡£

¿¤¯¤Î±é»»»Ò¤¬¡¢EOF ¤ä̤½é´ü²½ÊÑ¿ô¡¢¥·¥¹¥Æ¥à¥¨¥é¡¼¤È¤¤¤Ã¤¿¡¢ Î㳰Ū¤Ê¾ò·ï¤Ç undef ¤òÊÖ¤¹¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ ¤³¤Î´Ø¿ô¤Ï¡¢Â¾¤ÎÃÍ¤È undef ¤È¤ò¶èÊ̤¹¤ë¤¿¤á¤Ë»È¤¨¤Þ¤¹¡£ (ñ½ã¤Ê¿¿µ¶Ãͥƥ¹¥È¤Ç¤Ï¡¢undef¡¢0¡¢"0" ¤Î¤¤¤º¤ì¤âµ¶¤òÊÖ¤¹¤Î¤Ç¡¢ ¶èÊ̤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£) undef ¤ÏÍ­¸ú¤Ê¥¹¥«¥éÃͤʤΤǡ¢¤½¤Î¸ºß¤¬ ɬ¤º¤·¤â Î㳰Ū¤Ê¾õ¶·¤òɽ¤¹¤È¤Ï¸Â¤é¤Ê¤¤¤È¤¤¤¦¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤: pop ¤Ï°ú¿ô¤¬¶õ¤ÎÇÛÎó¤À¤Ã¤¿¤È¤­¤Ë undef ¤òÊÖ¤·¤Þ¤¹¤¬¡¢ ¤¢¤ë¤¤¤Ï ÊÖ¤¹¤Ù¤­Í×ÁǤ¬¤¿¤Þ¤¿¤Þ undef ¤À¤Ã¤¿¤Î¤«¤â¤·¤ì¤Þ¤»¤ó¡£

defined(&func) ¤È¤¹¤ë¤³¤È¤Ç¥µ¥Ö¥ë¡¼¥Á¥ó &func ¤Î¸ºß¤ò¡¢ ³Î¤«¤á¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ ÊÖ¤êÃÍ¤Ï &func ¤ÎÁ°ÊýÄêµÁ¤Ë¤Ï±Æ¶Á¤µ¤ì¤Þ¤»¤ó¡£ ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¥µ¥Ö¥ë¡¼¥Á¥ó¤â¸Æ¤Ó½Ð¤·²Äǽ¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ºÇ½é¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿¤È¤­¤Ë¸ºß¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Î AUTOLOAD ¥á¥½¥Ã¥É¤ò»ý¤Ã¤¿¥Ñ¥Ã¥±¡¼¥¸¤«¤â¤·¤ì¤Þ¤»¤ó-- perlsub ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

½¸¹ç(¥Ï¥Ã¥·¥å¤äÇÛÎó)¤Ø¤Î defined ¤Î»ÈÍѤÏÈó¿ä¾©¤Ç¤¹¡£ ¤³¤ì¤Ï¤½¤Î½¸¹ç¤Ë¥á¥â¥ê¤¬³ä¤êÅö¤Æ¤é¤ì¤¿¤«¤òÊó¹ð¤¹¤ë¤Î¤Ë ÍѤ¤¤é¤ì¤Æ¤¤¤Þ¤·¤¿¡£ ¤³¤Î¿¶¤ëÉñ¤¤¤Ï¾­Íè¤Î¥Ð¡¼¥¸¥ç¥ó¤Î Perl ¤Ç¤Ï¾ÃÌǤ¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£ Âå¤ï¤ê¤Ë¥µ¥¤¥º¤ËÂФ¹¤ë´Êñ¤Ê¥Æ¥¹¥È¤ò»È¤¦¤Ù¤­¤Ç¤¹¡£

    if (@an_array) { print "has array elements\n" }
    if (%a_hash)   { print "has hash members\n"   }

¥Ï¥Ã¥·¥å¤ÎÍ×ÁǤËÂФ·¤ÆÍѤ¤¤ë¤È¡¢value ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«Èݤ«¤ò ÊÖ¤¹¤â¤Î¤Ç¤¢¤Ã¤Æ¡¢¥Ï¥Ã¥·¥å¤Ë key ¤¬Â¸ºß¤¹¤ë¤«Èݤ«¤òÊÖ¤¹¤Î¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¤³¤ÎÍÑÅӤˤϡ¢exists ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

Îã:

    print if defined $switch{'D'};
    print "$val\n" while defined($val = pop(@ary));
    die "Can't readlink $sym: $!"
        unless defined($value = readlink $sym);
    sub foo { defined &$bar ? &$bar(@_) : die "No bar"; }
    $debugging = 0 unless defined $debugging;

Ãí°Õ: ¿¤¯¤Î¿Í¡¹¤¬ defined ¤ò»È¤¤¤¹¤®¤Æ¡¢0 ¤È ""(¶õʸ»úÎó) ¤¬ ¼ÂºÝ¤Î¤È¤³¤íÄêµÁ¤µ¤ì¤¿ÃͤǤ¢¤ë¤³¤È¤Ë¶Ã¤¯¤è¤¦¤Ç¤¹¡£ Î㤨¤Ð¡¢°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¯¤È:

    "ab" =~ /a(.*)b/;

¥Ñ¥¿¡¼¥ó¥Þ¥Ã¥Á¥ó¥°¤¬À®¸ù¤·¡¢$1 ¤¬ÄêµÁ¤µ¤ì¤Æ¤â¡¢¼ÂºÝ¤Ë¤Ï ¡Ö¤Ê¤·¡×¤Ë¥Þ¥Ã¥Á¤·¤Æ¤¤¤Þ¤¹¡£ ¤·¤«¤·¤³¤ì¤Ï²¿¤Ë¤â¥Þ¥Ã¥Á¤·¤Æ¤¤¤Ê¤¤¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ²¿¤«¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¤¬¡¢¤¿¤Þ¤¿¤Þ¤½¤ì¤¬Ä¹¤µ 0 ¤À¤Ã¤¿¤À¤±¤Ç¤¹¡£ ¤³¤ì¤ÏÈó¾ï¤ËΨľ¤ÇÀµÄ¾¤Ê¤³¤È¤Ç¤¹¡£ ´Ø¿ô¤¬Ì¤ÄêµÁÃͤòÊÖ¤¹¤È¤­¡¢ÀµÄ¾¤ÊÅú¤¨¤òÊÖ¤¹¤³¤È¤¬¤Ç¤­¤Ê¤¤¤³¤È¤ò ¹ðÇò¤·¤Æ¤¤¤Þ¤¹¡£ ¤Ç¤¹¤Î¤Ç¡¢¤¢¤Ê¤¿¤¬¼«Ê¬¤¬¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤³¤È¤Î´°Á´À­¤ò³Îǧ¤¹¤ë¤È¤­¤Ë¤À¤± defined ¤ò»È¤¦¤Ù¤­¤Ç¤¹¡£ ¤½¤Î¾¤Î¾ì¹ç¤Ç¤Ï¡¢Ã±¤Ë 0 ¤Þ¤¿¤Ï "" ¤ÈÈæ³Ó¤¹¤ë¤È¤¤¤¦¤Î¤¬¤¢¤Ê¤¿¤Î µá¤á¤Æ¤¤¤ë¤â¤Î¤Ç¤¹¡£

undef, exists, ref ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

delete EXPR

¥Ï¥Ã¥·¥åÍ×ÁÇ¡¢ÇÛÎóÍ×ÁÇ¡¢¥Ï¥Ã¥·¥å¥¹¥é¥¤¥¹¡¢ÇÛÎ󥹥饤¥¹¤ò»ØÄꤹ¤ë¼°¤ò¼è¤ê¡¢ »ØÄꤵ¤ì¤¿Í×ÁǤò¥Ï¥Ã¥·¥å¤äÇÛÎ󤫤é¤òºï½ü¤·¤Þ¤¹¡£ ÇÛÎó¤Î¾ì¹ç¡¢ÇÛÎóÍ×ÁǤ¬ºÇ¸å¤Ë¤¢¤Ã¤¿¾ì¹ç¤Ï¡¢ ÇÛÎó¤ÎÂ礭¤µ¤Ï exists() ¤¬¿¿¤òÊÖ¤¹ºÇ¸åÈø¤ÎÍ×ÁǤ˽̤ߤޤ¹ (¤½¤Î¤è¤¦¤ÊÍ×ÁǤ¬¤Ê¤¤¾ì¹ç¤Ï 0 ¤Ë¤Ê¤ê¤Þ¤¹)¡£

ºï½ü¤ò¤·¤è¤¦¤È¤·¤¿¤è¤¦¤½¤Î¿ô¤ÈƱ¤¸¿ô¤ÎÍ×ÁǤ«¤é¤Ê¤ë¥ê¥¹¥È¤òÊÖ¤·¤Þ¤¹¡£ ¤³¤Î¥ê¥¹¥È¤Î³ÆÍ×ÁǤϡ¢ºï½ü¤µ¤ì¤¿Ãͤ«Ì¤ÄêµÁÃͤΤɤÁ¤é¤«¤Ç¤¹¡£ ¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢¤³¤ì¤Ïºï½ü¤µ¤ì¤¿ºÇ¸å¤ÎÍ×ÁÇ(¤Þ¤¿¤Ïºï½ü¤µ¤ì¤¿Í×ÁǤ¬ ¤Ê¤¤¾ì¹ç¤Ï̤ÄêµÁÃÍ)¤òÆÀ¤ë¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£

    %hash = (foo => 11, bar => 22, baz => 33);
    $scalar = delete $hash{foo};             # $scalar is 11
    $scalar = delete @hash{qw(foo bar)};     # $scalar is 22
    @array  = delete @hash{qw(foo bar baz)}; # @array  is (undef,undef,33)

%ENV ¤«¤éºï½ü¤ò¹Ô¤Ê¤¦¤È¡¢¼ÂºÝ¤Ë´Ä¶­ÊÑ¿ô¤òÊѹ¹¤·¤Þ¤¹¡£ DBM ¥Õ¥¡¥¤¥ë¤Ë tie ¤µ¤ì¤¿ÇÛÎ󤫤é¤Îºï½ü¤Ï¡¢¤½¤Î DBM ¥Õ¥¡¥¤¥ë¤«¤é¥¨¥ó¥È¥ê¤ò ºï½ü¤·¤Þ¤¹¡£ ¤·¤«¤·¡¢tie ¤µ¤ì¤¿¥Ï¥Ã¥·¥å¤äÇÛÎ󤫤é¤Îºï½ü¤Ï¡¢ ÃͤòÊÖ¤¹¤È¤Ï¸Â¤ê¤Þ¤»¤ó¡£

ÇÛÎóÍ×ÁǤòºï½ü¤·¤¿¾ì¹ç¡¢ÇÛÎó¤Î°ÌÃ֤Ͻé´ü¤Î¡¢½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¾õÂ֤ˤʤê¤Þ¤¹¡£ °ú¤­Â³¤¤¤ÆÆ±¤¸Í×ÁǤËÂФ·¤Æ exists() ¤Ç¥Æ¥¹¥È¤¹¤ë¤Èµ¶¤òÊÖ¤·¤Þ¤¹¡£ ¤Þ¤¿¡¢ÇÛÎó¤ÎÅÓÃæ¤ÎÇÛÎóÍ×ÁǤòºï½ü¤·¤Æ¤â¥¤¥ó¥Ç¥Ã¥¯¥¹¤Ï¥·¥Õ¥È¤·¤Þ¤»¤ó¡£ ¤³¤Î¤¿¤á¤Ë¤Ï splice() ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ exists ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

°Ê²¼¤Ï¡¢%HASH ¤È @ARRAY ¤Î¤¹¤Ù¤Æ¤ÎÃͤò(Èó¸úΨŪ¤Ë)ºï½ü¤·¤Þ¤¹:

    foreach $key (keys %HASH) {
        delete $HASH{$key};
    }
    foreach $index (0 .. $#ARRAY) {
        delete $ARRAY[$index];
    }

¤½¤·¤Æ°Ê²¼¤Î¤è¤¦¤Ë¤â¤Ç¤­¤Þ¤¹:

    delete @HASH{keys %HASH};
    delete @ARRAY[0 .. $#ARRAY];

¤·¤«¤·¡¢¤³¤ì¤éÆó¤Ä¤Ïñ¤Ë¶õ¥ê¥¹¥È¤òÂåÆþ¤¹¤ë¤«¡¢%HASH ¤ä @ARRAY ¤ò undef ¤¹¤ë¤è¤êÃÙ¤¤¤Ç¤¹:

    %HASH = ();         # completely empty %HASH
    undef %HASH;        # forget %HASH ever existed
    @ARRAY = ();        # completely empty @ARRAY
    undef @ARRAY;       # forget @ARRAY ever existed

ºÇ½ªÅª¤ÊÁàºî¤¬¥Ï¥Ã¥·¥åÍ×ÁÇ¡¢ÇÛÎóÍ×ÁÇ¡¢¥Ï¥Ã¥·¥å¥¹¥é¥¤¥¹¡¢ÇÛÎ󥹥饤¥¹¤Î ¤¤¤º¤ì¤«¤Ç¤¢¤ë¸Â¤ê¤Ï¡¢EXPR ¤Ë¤ÏǤ°Õ¤ÎÊ£»¨¤Ê¼°¤òÃÖ¤¯¤³¤È¤¬¤Ç¤­¤ë¤³¤È¤Ë Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤:

    delete $ref->[$x][$y]{$key};
    delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys};
    delete $ref->[$x][$y][$index];
    delete @{$ref->[$x][$y]}[$index1, $index2, @moreindices];
die LIST

eval ¤Î³°¤Ç¤Ï¡¢LIST ¤ÎÃͤò STDERR ¤Ë½ÐÎϤ·¡¢¤½¤Î»þÅÀ¤Î $! (errno) ¤ÎÃÍ¤Ç exit ¤·¤Þ¤¹¡£ $! ¤ÎÃͤ¬ 0 ¤Ê¤é¤Ð¡¢ ($? >> 8) (backtick `command` ¤Î¥¹¥Æ¡¼¥¿¥¹) ¤ÎÃÍ¤Ç exit¤·¤Þ¤¹¡£ ($? >> 8) ¤â 0 ¤Ç¤¢¤ì¤Ð¡¢255 ¤Ç exit ¤¹¤ë¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ eval ¤ÎÃæ¤Ç»ÈÍѤ¹¤ë¤È¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬¡¢ $@ ¤ËÆþ¤ì¤é¤ì¤Þ¤¹¡£ eval ¤ÏÃæÃǤµ¤ì¡¢Ì¤ÄêµÁÃͤòÊÖ¤·¤Þ¤¹¡£ ¤³¤ì¤¬ die ¤¬Îã³°¤òȯÀ¸¤µ¤»¤ëÊýË¡¤Ç¤¹¡£

Åù²Á¤ÊÎã:

    die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news';
    chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"

LIST ¤ÎºÇ¸å¤ÎÍ×ÁǤ¬²þ¹Ô¤Ç½ª¤ï¤Ã¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢¤½¤Î»þÅÀ¤Î ¥¹¥¯¥ê¥×¥È̾¤È¥¹¥¯¥ê¥×¥È¤Î¹ÔÈֹ桢(¤â¤·¤¢¤ì¤Ð) ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î¹ÔÈÖ¹æ¤È²þ¹Ôʸ»ú¤¬¡¢Â³¤±¤ÆÉ½¼¨¤µ¤ì¤Þ¤¹¡£ ¡ÖÆþÎϹÔÈÖ¹æ¡×("chunk" ¤È¤â¸Æ¤Ð¤ì¤Þ¤¹)¤Ï ¡Ö¹Ô¡×¤È¤¤¤¦³µÇ°¤¬¸½ºßÍ­¸ú¤Ç¤¢¤ë¤È²¾Äꤷ¤Æ¤¤¤Þ¤¹¡£ ¤Þ¤¿ÆÃ¼ìÊÑ¿ô $. ¤Ç¤âÍøÍѲÄǽ¤Ç¤¹¡£ $/ in perlvar ¤È $. in perlvar ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¥Ò¥ó¥È: ¥á¥Ã¥»¡¼¥¸¤ÎºÇ¸å¤ò ", stopped" ¤Î¤è¤¦¤Ê¤â¤Î¤Ç ½ª¤ï¤ë¤è¤¦¤Ë¤·¤Æ¤ª¤±¤Ð¡¢"at foo line 123" ¤Î¤è¤¦¤Ë Äɲäµ¤ì¤Æ¡¢¤ï¤«¤ê¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£ "canasta" ¤È¤¤¤¦¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤·¤Æ¤¤¤ë¤È¤·¤Þ¤¹¡£

    die "/etc/games is no good";
    die "/etc/games is no good, stopped";

¤³¤ì¤Ï¡¢¤½¤ì¤¾¤ì°Ê²¼¤Î¤è¤¦¤Ëɽ¼¨¤·¤Þ¤¹¡£

    /etc/games is no good at canasta line 123.
    /etc/games is no good, stopped at canasta line 123.

exit() ¤È warn() ¤È Carp ¥â¥¸¥å¡¼¥ë¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

LIST ¤¬¶õ¤Ç $@ ¤¬(ŵ·¿Åª¤Ë¤ÏÁ°²ó¤Î eval ¤Ç)´û¤ËÃͤò»ý¤Ã¤Æ¤¤¤ë¾ì¹ç¡¢ ÃÍ¤Ï "\t...propagated" ¤òÄɲä·¤¿¸åºÆÍøÍѤµ¤ì¤Þ¤¹¡£ ¤³¤ì¤ÏÎã³°¤òÅÁÇŤµ¤»¤ë¾ì¹ç¤ËÍ­¸ú¤Ç¤¹:

    eval { ... };
    die unless $@ =~ /Expected exception/;

LIST ¤¬¶õ¤Ç¡¢$@ ¤¬ PROPAGATE ¥á¥½¥Ã¥É¤ò´Þ¤à¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î ¥ê¥Õ¥¡¥ì¥ó¥¹¤ò´Þ¤à¾ì¹ç¡¢¤³¤Î¥á¥½¥Ã¥É¤¬Äɲåե¡¥¤¥ë¤È¹ÔÈÖ¹æ¤ò°ú¿ô¤È¤·¤Æ ¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ ÊÖ¤êÃÍ¤Ï $@ ¤ÎÃͤòÃÖ¤­´¹¤¨¤Þ¤¹¡£ ¤Ä¤Þ¤ê¡¢$@ = eval { $@->PROPAGATE(__FILE__, __LINE__) }; ¤¬ ¸Æ¤Ó½Ð¤µ¤ì¤¿¤«¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

$@ ¤¬¶õ¤Î¾ì¹ç¡¢"Died" ¤¬»È¤ï¤ì¤Þ¤¹¡£

die() ¤Ï¥ê¥Õ¥¡¥ì¥ó¥¹°ú¿ô¤È¶¦¤Ë¸Æ¤Ó½Ð¤¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ eval() ÆâÉô¤Ç¤³¤Î¤è¤¦¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç¡¢$@ ¤Ï¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»ý¤Á¤Þ¤¹¡£ ¤³¤Î¿¶¤ëÉñ¤¤¤Ï¡¢Îã³°¤ÎÀ­¼Á¤Ë¤¹¤¤¤ÆÇ¤°Õ¤Î¾õÂÖ¤ò´ÉÍý¤¹¤ë¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤Ã¤¿ ¤è¤êÊ£»¨¤ÊÎã³°¥Ï¥ó¥É¥ê¥ó¥°¤Î¼ÂÁõ¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£ ¤³¤Î¤è¤¦¤Ê¥¹¥­¡¼¥Þ¤Ï $@ ¤ÎÆÃÄê¤Îʸ»úÎóÃͤòÀµµ¬É½¸½¤ò»È¤Ã¤Æ ¥Þ¥Ã¥Á¥ó¥°¤¹¤ë¤È¤­¤Ë»þ¡¹¹¥¤Þ¤ì¤Þ¤¹¡£ $@ ¤Ï¥°¥í¡¼¥Ð¥ëÊÑ¿ô¤Ç¡¢eval() ¤Ï¥ª¥Ö¥¸¥§¥¯¥È¼ÂÁõ¤ÎÆâÉô¤Ç »È¤ï¤ì¤ë¤³¤È¤¬¤¢¤ë¤Î¤Ç¡¢¥¨¥é¡¼¥ª¥Ö¥¸¥§¥¯¥È¤Î²òÀϤϥ°¥í¡¼¥Ð¥ëÊÑ¿ô¤Î ¥ê¥Õ¥¡¥ì¥ó¥¹¤òÃÖ¤­´¹¤¨¤Ê¤¤¤³¤È¤ËÃí°Õ¤òʧ¤ï¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ ºÇ¤â´Êñ¤Ê²ò·èÊýË¡¤Ï¡¢Â¾¤ÎÁàºî¤ò¤¹¤ëÁ°¤Ë¥ê¥Õ¥¡¥ì¥ó¥¹¤Î¥í¡¼¥«¥ë¥³¥Ô¡¼¤ò ºî¤ë¤³¤È¤Ç¤¹¡£ °Ê²¼¤ËÎã¤ò¼¨¤·¤Þ¤¹:

    use Scalar::Util 'blessed';
    eval { ... ; die Some::Module::Exception->new( FOO => "bar" ) };
    if (my $ev_err = $@) {
        if (blessed($ev_err) && $ev_err->isa("Some::Module::Exception")) {
            # handle Some::Module::Exception
        }
        else {
            # handle all other possible exceptions
        }
    }

perl ¤ÏÊá¤é¤¨¤é¤ì¤Ê¤«¤Ã¤¿Îã³°¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ëÁ°¤Ëʸ»úÎ󲽤¹¤ë¤Î¤Ç¡¢ ¤³¤Î¤è¤¦¤Ê¥«¥¹¥¿¥àÎã³°¥ª¥Ö¥¸¥§¥¯¥È¤Îʸ»úÎ󲽤ò¥ª¡¼¥Ð¡¼¥í¡¼¥É¤·¤¿¤¤¤È »×¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£ ¤³¤ì¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ï overload ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

$SIG{__DIE__} ¥Õ¥Ã¥¯¤ò¥»¥Ã¥È¤¹¤ë¤³¤È¤Ç¡¢die ¤¬¤½¤Î¹Ôư¤ò¹Ô¤¦ ľÁ°¤Ë¼Â¹Ô¤µ¤ì¤ë¥³¡¼¥ë¥Ð¥Ã¥¯¤òÀßÄê¤Ç¤­¤Þ¤¹¡£ ·ë¤ÓÉÕ¤±¤é¤ì¤¿¥Ï¥ó¥É¥é¤Ï¥¨¥é¡¼¥Æ¥­¥¹¥È¤È¶¦¤Ë¸Æ¤Ó½Ð¤µ¤ì¡¢ ɬÍ×¤Ê¤éºÆ¤Ó die ¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¥¨¥é¡¼¥Æ¥­¥¹¥È¤òÊѹ¹¤Ç¤­¥¢¥¹¡£ %SIG ¤Î¥¨¥ó¥È¥ê¤ò¥»¥Ã¥È¤¹¤ë¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢$SIG{expr} in perlvar ¤ò¡¢ Îã¤Ë¤Ä¤¤¤Æ¤Ï eval BLOCK ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤Îµ¡Ç½¤Ï¥×¥í¥°¥é¥à¤¬½ªÎ»¤·¤è¤¦¤È¤¹¤ëÁ°¤Ë 1 ²ó¤À¤±¼Â¹Ô¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¢ ¸½ºß¤Ç¤Ï¤½¤¦¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó -- $SIG{__DIE__} ¥Õ¥Ã¥¯¤Ï eval() ¤µ¤ì¤¿¥Ö¥í¥Ã¥¯/ʸ»úÎó¤ÎÃæ¤Ç¤â ¸Æ¤Ð¤ì¤ë¤Î¤Ç¤¹! ¤â¤·¤½¤Î¤è¤¦¤Ê¾õ¶·¤Ç²¿¤â¤·¤Ê¤¯¤Ê¤¤»þ¤Ï:

        die @_ if $^S;

¤ò¥Ï¥ó¥É¥é¤ÎºÇ½é¤Î¹Ô¤ËÃÖ¤¤¤Æ¤¯¤À¤µ¤¤($^S in perlvar ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£ ¤³¤ì¤ÏÎ¥¤ì¤¿¤È¤³¤í¤ÇÉÔ»×µÄ¤Ê¹ÔÆ°¤ò°ú¤­µ¯¤³¤¹¤Î¤Ç¡¢ ¤³¤Îľ´¶Åª¤Ç¤Ê¤¤¿¶¤ëÉñ¤¤¤Ï¾­Íè¤Î¥ê¥ê¡¼¥¹¤Ç½¤Àµ¤µ¤ì¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

do BLOCK

¼ÂºÝ¤Ï´Ø¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ BLOCK ¤Ç¼¨¤µ¤ì¤ë¥³¥Þ¥ó¥ÉÎó¤ÎºÇ¸å¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£ while ¤ä until ¥ë¡¼¥×½¤¾þ»Ò¤Ç½¤¾þ¤¹¤ë¤È¡¢ ¥ë¡¼¥×¾ò·ï¤òÄ´¤Ù¤ëÁ°¤Ë 1 ÅÙ¡¢BLOCK ¤ò¼Â¹Ô¤·¤Þ¤¹¡£ (¤³¤ì°Ê³°¤Î¼Â¹Ôʸ¤Ï¡¢¥ë¡¼¥×½¤¾þ»Ò¤Ë¤è¤ê¡¢¾ò·ï¤¬ºÇ½é¤Ë Ä´¤Ù¤é¤ì¤Þ¤¹¡£)

do BLOCK ¤Ï¥ë¡¼¥×¤È¤·¤Æ¤Ï °·¤ï¤ì¤Þ¤»¤ó¡£ ½¾¤Ã¤Æ¡¢next, last, redo ¤È¤¤¤Ã¤¿¥ë¡¼¥×À©¸æÊ¸¤Ï ¥Ö¥í¥Ã¥¯¤«¤éÈ´¤±¤¿¤êºÆ³«¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ ¤½¤Î¾¤ÎÀïά¤Ë¤Ä¤¤¤Æ¤Ï perlsyn ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

do SUBROUTINE(LIST)

¤³¤Î·Á¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¸Æ¤Ó½Ð¤·¤ÏÈó¿ä¾©¤Ç¤¹¡£ perlsub ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

do EXPR

EXPR ¤ÎÃͤò¥Õ¥¡¥¤¥ë̾¤È¤·¤ÆÍѤ¤¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÃæ¿È¤ò Perl ¤Î¥¹¥¯¥ê¥×¥È¤È¤·¤Æ¼Â¹Ô¤·¤Þ¤¹¡£

    do 'stat.pl';

¤Ï°Ê²¼¤Î¤â¤Î¤ÈƱ¤¸¤è¤¦¤Ê¤â¤Î¤Ç¤¹¤¬¡¢

    eval `cat stat.pl`;

¤è¤ê¸úΨŪ¤Ç¡¢´Ê·é¤Ç¤¢¤ê¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Ç¥Õ¥¡¥¤¥ë̾¤¬¤ï¤«¤ë¡¢ ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ç¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¤È¤­¤Ë @INC ¥Ç¥£¥ì¥¯¥È¥ê¤ò¸¡º÷¤¹¤ë¡¢¥Õ¥¡¥¤¥ë¤¬¤¢¤Ã¤¿¤È¤­¤Ë %INC ¤ò¹¹¿·¤¹¤ë¡¢ ¤È¤¤¤Ã¤¿¤³¤È¤¬¤¢¤ê¤Þ¤¹¡£ Predefined Names in perlvar ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ do FILENAME ¤Çɾ²Á¤µ¤ì¤¿¥³¡¼¥É¤Ï¡¢Æþ¤ì»Ò¤Î¥¹¥³¡¼¥×¤Ë¤¢¤ë ¥ì¥­¥·¥«¥ëÊÑ¿ô¤ò¸«¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¤Î¤ËÂФ·¡¢eval STRING¤Ç¤Ï¤Ç¤­¤ë¡¢ ¤È¤¤¤¦°ã¤¤¤¬¤¢¤ê¤Þ¤¹¡£ ¤·¤«¤·¡¢¸Æ¤Ó½Ð¤¹¤¿¤Ó¤Ë¥Õ¥¡¥¤¥ë¤ò²òÀϤ·Ä¾¤¹¤È¤¤¤¦ÅÀ¤Ç¤ÏƱ¤¸¤Ç¤¹¤«¤é¡¢ ¥ë¡¼¥×Æâ¤Ç¤³¤ì¤ò»È¤ª¤¦¤Ê¤É¤È¤Ï¡¢´Ö°ã¤Ã¤Æ¤â»×¤Ã¤¿¤ê¤·¤Ê¤¤¤è¤¦¤Ë¡£

do¤¬¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤á¤Ê¤«¤Ã¤¿¾ì¹ç¡¢undef ¤òÊÖ¤·¤Æ $! ¤Ë ¥¨¥é¡¼¤òÀßÄꤷ¤Þ¤¹¡£ do ¤¬¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤á¤¿¤¬¥³¥ó¥Ñ¥¤¥ë¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¡¢ undef ¤òÊÖ¤·¤Æ $@ ¤Ë¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òÀßÄꤷ¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¤Î¥³¥ó¥Ñ¥¤¥ë¤ËÀ®¸ù¤·¤¿¾ì¹ç¡¢do ¤ÏºÇ¸å¤Ëɾ²Á¤·¤¿É½¸½¤ÎÃͤòÊÖ¤·¤Þ¤¹¡£

¥é¥¤¥Ö¥é¥ê¥â¥¸¥å¡¼¥ë¤Î¥¤¥ó¥¯¥ë¡¼¥É¤Ë¤Ï¡¢use ±é»»»Ò¤ä require ±é»»»Ò¤ò»È¤Ã¤¿Êý¤¬¤è¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤ì¤é¤Ï¼«Æ°Åª¤Ë¥¨¥é¡¼¤ò¥Á¥§¥Ã¥¯¤·¤Æ¡¢ÌäÂ꤬¤¢¤ì¤ÐÎã³°¤òȯÀ¸¤µ¤»¤Þ¤¹¡£

do ¤ò¥×¥í¥°¥é¥àÀßÄê¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤à¤Î¤Ë»È¤¤¤¿¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ ¼êư¤Î¥¨¥é¡¼¥Á¥§¥Ã¥¯¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ¹Ô¤¨¤Þ¤¹:

    # read in config files: system first, then user
    for $file ("/share/prog/defaults.rc",
               "$ENV{HOME}/.someprogrc")
   {
        unless ($return = do $file) {
            warn "couldn't parse $file: $@" if $@;
            warn "couldn't do $file: $!"    unless defined $return;
            warn "couldn't run $file"       unless $return;
        }
    }
dump LABEL
dump

¤³¤Î´Ø¿ô¤Ï¨ºÂ¤Ë¥³¥¢¥À¥ó¥×¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ ƱÍͤΤ³¤È¤ò¹Ô¤¦ perlrun ¤Î -u ¥ª¥×¥·¥ç¥ó¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ ¥×¥í¥°¥é¥à¤ÎÀèÆ¬¤Ç¡¢ ¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤ò½é´ü²½¤·¤¿¤¢¤È¤Î¥³¥¢¥À¥ó¥×¤ò undump ¥×¥í¥°¥é¥à(Ä󶡤·¤Æ¤¤¤Þ¤»¤ó)¤ò»È¤Ã¤Æ¼Â¹Ô¥Õ¥¡¥¤¥ë¤ËÊ֤뤳¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤³¤Î¿·¤·¤¤¥Ð¥¤¥Ê¥ê¤¬¼Â¹Ô¤µ¤ì¤ë¤È¡¢goto LABEL ¤«¤é»Ï¤á¤Þ¤¹ (goto ¤Ë´Ø¤¹¤ëÀ©¸Â¤Ï¤¹¤Ù¤ÆÅ¬ÍѤµ¤ì¤Þ¤¹)¡£ ¥³¥¢¥À¥ó¥×¤ò¤Ï¤µ¤ó¤ÇºÆÀ¸¤¹¤ë goto ¤È¹Í¤¨¤Æ¤¯¤À¤µ¤¤¡£ LABEL ¤¬¾Êά¤µ¤ì¤ë¤È¡¢¥×¥í¥°¥é¥à¤òÀèÆ¬¤«¤éºÆ³«¤·¤Þ¤¹¡£

·Ù¹ð: dump »þÅÀ¤Ç¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤¿¥Õ¥¡¥¤¥ë¤Ï¡¢ ¥×¥í¥°¥é¥à¤¬ºÆÀ¸¤µ¤ì¤¿¤È¤­¤Ë¤Ï¡¢¤â¤Ï¤ä¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ Perl ¤òÉôʬŪ¤Ëº®Í𤵤»¤ë²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£

¤³¤Î´Ø¿ô¤ÏÂçÉý¤Ë»þÂåÃÙ¤ì¤Î¤â¤Î¤Ç¤¹; ¼ç¤ÊÍýͳ¤È¤·¤Æ¤Ï¡¢¥³¥¢¥Õ¥¡¥¤¥ë¤ò ¼Â¹Ô·Á¼°¤ËÊÑ´¹¤¹¤ë¤Î¤¬Èó¾ï¤Ëº¤Æñ¤Ç¤¢¤ë¤³¤È¤Ç¤¹¡£ ¤³¤ì¤¬¡¢º£¤Ç¤Ï¥¿¥¤¥×¥ß¥¹¤Î²ÄǽÀ­¤ò·Ù¹ð¤µ¤ì¤¿¤¯¤Ê¤¤¤Ê¤é CORE::dump() ¤È¤·¤Æµ¯Æ°¤¹¤ë¤Ù¤­Íýͳ¤Ç¤¹¡£

each HASH

¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¸Æ¤Ó½Ð¤·¤¿¾ì¹ç¤Ï¡¢ ¥Ï¥Ã¥·¥å¤Î¼¡¤Î Í×ÁÇ ¤ËÂФ¹¤ë¡¢key ¤È Í×ÁÇ ¤«¤é¤Ê¤ë 2 Í×ÁǤΥꥹ¥È¤òÊÖ¤·¤Þ¤¹¤Î¤Ç¡¢¥Ï¥Ã¥·¥å¾å¤Ç¤Î·«¤êÊÖ¤·¤ò ¹Ô¤Ê¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¸Æ¤Ó½Ð¤·¤¿¾ì¹ç¤Ï¡¢ ¥Ï¥Ã¥·¥å¤Î¼¡¤ÎÍ×ÁǤΤ¿¤á¤Î key ¤òÊÖ¤·¤Þ¤¹¡£

¥¨¥ó¥È¥ê¤Ï¸«¤«¤±¾å¡¢¥é¥ó¥À¥à¤Ê½ç½ø¤ÇÊÖ¤µ¤ì¤Þ¤¹¡£ ¼ÂºÝ¤Î¥é¥ó¥À¥à¤Ê½çÈÖ¤Ï perl ¤Î¾­Íè¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÏÊѤï¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢ keys ¤ä values ´Ø¿ô¤¬Æ±¤¸(Êѹ¹¤µ¤ì¤Æ¤¤¤Ê¤¤)¥Ï¥Ã¥·¥å¤ËÂФ·¤Æ À¸À®¤¹¤ë¤Î¤ÈƱ¤¸½çÈ֤Ǥ¢¤ë¤³¤È¤ÏÊݾڤµ¤ì¤Þ¤¹¡£ Perl 5.8.1 °Ê¹ß¤Ç¤Ï¥»¥­¥å¥ê¥Æ¥£¾å¤ÎÍýͳ¤Ë¤è¤ê¡¢ ¼Â¹Ô¤µ¤ì¤ëËè¤Ë½çÈÖ¤ÏÊѤï¤ê¤Þ¤¹ (Algorithmic Complexity Attacks in perlsec ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£

¥Ï¥Ã¥·¥å¤ò¤¹¤Ù¤ÆÆÉ¤ß¹þ¤ó¤Ç¤·¤Þ¤¦¤È¡¢¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¶õÇÛÎó¤¬ ÊÖ¤µ¤ì¤Þ¤¹(¤³¤ì¤ÏÂåÆþ¤µ¤ì¤ë¤È¡¢µ¶ (0) ¤È¤Ê¤ê¤Þ¤¹)¡£ ¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï undef ¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£ ¤½¤Î¤¢¤È¡¢¤â¤¦°ìÅÙ each ¤ò¸Æ¤Ó½Ð¤¹¤È¡¢ ºÆ¤Ó·«¤êÊÖ¤·¤ò»Ï¤á¤Þ¤¹¡£ ¥Ï¥Ã¥·¥å¤´¤È¤ËÈ¿Éü»Ò¤¬ 1 ¤Ä¤¢¤ê¡¢¥×¥í¥°¥é¥àÃæ¤Î¤¹¤Ù¤Æ¤Î each ´Ø¿ô¡¢keys ´Ø¿ô¡¢values ´Ø¿ô¤Ç¶¦ÍѤµ¤ì¤Þ¤¹¡£ È¿Éü»Ò¤Ï¡¢ÇÛÎó¤ÎÍ×ÁǤò¤¹¤Ù¤ÆÆÉ¤à¤³¤È¤Ë¤è¤Ã¤Æ¡¢¤Þ¤¿¤Ïkeys HASH, values HASH¤òɾ²Á¤¹¤ë¤³¤È¤Ç¥ê¥»¥Ã¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ·«¤êÊÖ¤·¤ò¹Ô¤Ê¤Ã¤Æ¤¤¤ë´Ö¤Ë¡¢¥Ï¥Ã¥·¥å¤ËÍ×ÁǤòÄɲä·¤¿¤êºï½ü¤·¤¿¤ê¤¹¤ë¤È¡¢ Í×ÁǤ¬Èô¤Ð¤µ¤ì¤¿¤ê½ÅÊ£¤·¤¿¤ê¤¹¤ë¤Î¤Ç¡¢¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ Îã³°: °ìÈֺǶá¤Ë each() ¤«¤éÊÖ¤µ¤ì¤¿¤â¤Î¤òºï½ü¤¹¤ë¤Î¤Ï¾ï¤Ë°ÂÁ´¤Ç¤¹¡£ ¤³¤ì¤Ï°Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥É¤¬Àµ¤·¤¯Æ°¤¯¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹:

        while (($key, $value) = each %hash) {
          print $key, "\n";
          delete $hash{$key};   # This is safe
        }

°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¡¢½çÈÖ¤¬°Û¤Ê¤ë¤â¤Î¤Î¡¢ printenv(1) ¥×¥í¥°¥é¥à¤Î¤è¤¦¤Ë´Ä¶­ÊÑ¿ô¤òɽ¼¨¤·¤Þ¤¹:

    while (($key,$value) = each %ENV) {
        print "$key=$value\n";
    }

keys ¤ä values ¤ä sort ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

eof FILEHANDLE
eof ()
eof

¼¡¤Ë FILEHANDLE ¾å¤ÇÆÉ¤ß¹þ¤ß¤ò¹Ô¤Ê¤Ã¤¿¤È¤­¤Ë¡¢ EOF ¤¬ÊÖ¤µ¤ì¤ë¤È¤­¤«¡¢ FILEHANDLE ¤¬¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤Ê¤¤¤È¡¢1 ¤òÊÖ¤·¤Þ¤¹¡£ FILEHANDLE ¤Ï¡¢Ãͤ¬¼ÂºÝ¤Î¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ò¼¨¤¹¼°¤Ç¤¢¤Ã¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ (¤³¤Î´Ø¿ô¤Ï¡¢¼ÂºÝ¤Ëʸ»ú¤òÆÉ¤ß¡¢ungetc ¤ò¹Ô¤Ê¤¤¤Þ¤¹¤Î¤Ç¡¢ ÂÐÏ÷¿¤Î¾ì¹ç¤Ë¤Ï¡¢¤½¤ìÄøÍ­ÍѤǤϤ¢¤ê¤Þ¤»¤ó¡£) üËö¥Õ¥¡¥¤¥ë¤Ï EOF ¤Ë㤷¤¿¸å¤Ë¤µ¤é¤ËÆÉ¤ß¹þ¤ó¤À¤ê eof(FILEHANDLE) ¤ò ¸Æ¤Ó½Ð¤·¤¿¤ê¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ ¤½¤Î¤è¤¦¤Ê¤³¤È¤ò¤¹¤ë¤È¡¢Ã¼Ëö¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¥¿¥¤¥×¤Ï EOF ¾õÂÖ¤ò¼º¤Ã¤Æ¤·¤Þ¤¦¤«¤â¤·¤ì¤Þ¤»¤ó¡£

°ú¿ô¤ò¾Êά¤·¤¿ eof ¤Ï¡¢ºÇ¸å¤ËÆÉ¤ß¹þ¤ß¤ò¹Ô¤Ê¤Ã¤¿¥Õ¥¡¥¤¥ë¤ò»È¤¤¤Þ¤¹¡£ ¶õ¤Î³ç¸Ì¤ò¤Ä¤±¤¿ eof() ¤ÏÂ礭¤¯°Û¤Ê¤ê¤Þ¤¹¡£ ¤³¤ì¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥Õ¥¡¥¤¥ë¥ê¥¹¥È¤Ç¹½À®¤µ¤ì¡¢<> ±é»»»Ò·Ðͳ¤Ç ¥¢¥¯¥»¥¹¤µ¤ì¤ëµ¼»÷¥Õ¥¡¥¤¥ë¤ò¼¨¤¹¤¿¤á¤ËÍѤ¤¤é¤ì¤Þ¤¹¡£ Ä̾ï¤Î¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤È°ã¤Ã¤Æ <> ¤ÏÌÀ¼¨Åª¤Ë¥ª¡¼¥×¥ó¤µ¤ì¤Ê¤¤¤Î¤Ç¡¢ <> ¤ò»È¤¦Á°¤Ë eof() ¤ò»È¤¦¤È¡¢ ÆþÎϤ¬Àµ¾ï¤«³Îǧ¤¹¤ë¤¿¤á¤Ë @ARGV ¤¬¥Æ¥¹¥È¤µ¤ì¤Þ¤¹¡£ ƱÍͤˡ¢<> ¤Î¸å¤Î eof() ¤Ç EOF ¤¬ÊÖ¤ë¤Î¤Ï¡¢ ¾¤Î @ARGV ¥ê¥¹¥È¤ò½èÍý¤·¤Æ¤¤¤ë¤È²¾Äꤷ¡¢¤â¤· @ARGV ¤ò ¥»¥Ã¥È¤·¤Æ¤¤¤Ê¤¤¤È¤­¤Ï STDIN ¤«¤éÆÉ¤ß¹þ¤ß¤Þ¤¹; I/O Operators in perlop ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

while (<>) ¥ë¡¼¥×¤ÎÃæ¤Ç¤Ï¡¢¸Ä¡¹¤Î¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤òÄ´¤Ù¤ë¤Ë¤Ï¡¢ eof ¤« eof(ARGV) ¤òÍѤ¤¤Þ¤¹¡£ eof() ¤ÏºÇ¸å¤Î¥Õ¥¡¥¤¥ë¤Î½ª¤ï¤ê¤Î¤ß¤òÄ´¤Ù¤Þ¤¹¡£ Îã:

    # reset line numbering on each input file
    while (<>) {
        next if /^\s*#/;        # skip comments
        print "$.\t$_";
    } continue {
        close ARGV  if eof;     # Not eof()!
    }
    # insert dashes just before last line of last file
    while (<>) {
        if (eof()) {            # check for end of last file
            print "--------------\n";
        }
        print;
        last if eof();          # needed if we're reading from a terminal
    }

¸½¼ÂŪ¤Ê¥Ò¥ó¥È: Perl ¤Ç eof ¤¬É¬ÍפȤʤ뤳¤È¤Ï¡¢¤Û¤È¤ó¤É¤¢¤ê¤Þ¤»¤ó¡£ ´ðËÜŪ¤Ë¤Ï¡¢ ¥Ç¡¼¥¿¤¬¤Ê¤¯¤Ê¤Ã¤¿¤È¤­¤ä¥¨¥é¡¼¤¬¤¢¤Ã¤¿¤È¤­¤Ë¡¢ÆþÎϱ黻»Ò¤¬ undef ¤òÊÖ¤·¤Æ¤¯¤ì¤ë¤«¤é¤Ç¤¹¡£

eval EXPR
eval BLOCK
eval

Âè°ì¤Î·Á¼°¤Ç¤Ï¡¢EXPR ¤ÎÊÖ¤êÃͤ¬ Perl ¤Î¥×¥í¥°¥é¥à¤Ç¤¢¤ë¤«¤Î¤è¤¦¤Ë ²òÀϤµ¤ì¡¢¼Â¹Ô¤µ¤ì¤Þ¤¹¡£ ¼°¤ÎÃÍ(¤½¤ì¼«¿È¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤ÎÃæ¤Ç·èÄꤵ¤ì¤Þ¤¹)¤Ï¤Þ¤º¥Ñ¡¼¥¹¤µ¤ì¡¢ ¥¨¥é¡¼¤¬¤Ê¤±¤ì¤Ð Perl ¥×¥í¥°¥é¥à¤Î¥ì¥­¥·¥«¥ë¥³¥ó¥Æ¥­¥¹¥È¤ÎÃæ¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢ÊÑ¿ô¤ÎÀßÄê¡¢ ¥µ¥Ö¥ë¡¼¥Á¥ó¤ä¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÄêµÁ¤Ï¡¢¤½¤Î¸å¤â»Ä¤Ã¤Æ¤¤¤Þ¤¹¡£¡¡ ÊÖ¤µ¤ì¤ëÃÍ¤Ï eval ¤¬¼Â¹Ô¤µ¤ì¤ë¤´¤È¤Ë¥Ñ¡¼¥¹¤µ¤ì¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ EXPR ¤ò¾Êά¤¹¤ë¤È¡¢$_ ¤òɾ²Á¤·¤Þ¤¹¡£ ¤³¤Î·Á¤Ï¼ç¤Ë EXPR ¤Î¥Æ¥­¥¹¥È¤Î¥Ñ¡¼¥¹¤È¼Â¹Ô¤ò¼Â¹Ô»þ¤Ë¤Þ¤Ç Ãٱ䤵¤»¤ë¤Î¤ËÍѤ¤¤Þ¤¹¡£

ÂèÆó¤Î·Á¼°¤Ç¤Ï¡¢BLOCK ÆâÉô¤Î¥³¡¼¥É¤Ï°ìÅÙ¤À¤±¥Ñ¡¼¥¹¤µ¤ì -- ¥³¡¼¥É¤ò °Ï¤à eval ¼«¿È¤¬¥Ñ¡¼¥¹¤µ¤ì¤ë¤Î¤ÈƱ¤¸»þÅÀ¤Ç¤¹ -- ¸½ºß¤Î Perl ¥×¥í¥°¥é¥à¤Î ¥³¥ó¥Æ¥­¥¹¥È¤Ç¼Â¹Ô¤µ¤ì¤Þ¤¹¡£ ¤³¤Î·Á¼°¤Ïŵ·¿Åª¤Ë¤ÏÂè°ì¤Î·Á¼°¤è¤ê¸úΨŪ¤ËÎã³°¤ò¥È¥é¥Ã¥×¤·¤Þ¤¹(¸å½Ò)¡£ ¤Þ¤¿ BLOCK ÆâÉô¤Î¥³¡¼¥É¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥Á¥§¥Ã¥¯¤µ¤ì¤ë¤È¤¤¤¦ÍøÅÀ¤òÄ󶡤·¤Þ¤¹¡£

ºÇ¸å¤Î¥»¥ß¥³¥í¥ó¤Ï¡¢¤â¤·¤¢¤ì¤Ð¡¢EXPR ¤ÎÃͤä BLOCK ¤ÎÃæ¿È¤«¤é¾Ê¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

¤É¤Á¤é¤Î·Á¼°¤Ç¤â¡¢ÊÖ¤µ¤ì¤ëÃÍ¤Ï¥ß¥Ë¥×¥í¥°¥é¥à¤ÎÆâÉô¤ÇºÇ¸å¤Ëɾ²Á¤µ¤ì¤¿ ɽ¸½¤ÎÃͤǤ¹; ¥µ¥Ö¥ë¡¼¥Á¥ó¤ÈƱÍÍ¡¢return ʸ¤â»È¤¨¤Þ¤¹¡£ ÊÖ¤êÃͤȤ·¤ÆÄ󶡤µ¤ì¤ëɽ¸½¤Ï¡¢eval ¼«¿È¤Î¥³¥ó¥Æ¥­¥¹¥È¤Ë°Í¸¤·¤Æ ̵¸ú¡¦¥¹¥«¥é¡¦¥ê¥¹¥È¤Î¤¤¤º¤ì¤«¤Î¥³¥ó¥Æ¥­¥¹¥È¤Çɾ²Á¤µ¤ì¤Þ¤¹¡£ ɾ²Á¥³¥ó¥Æ¥­¥¹¥È¤Î·èÄêÊýË¡¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤Ï wantarray ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¹½Ê¸¥¨¥é¡¼¤ä¼Â¹Ô¥¨¥é¡¼¤¬È¯À¸¤¹¤ë¤«¡¢die ʸ¤¬¼Â¹Ô¤µ¤ì¤ë¤È¡¢ eval ¤ÎÃͤȤ·¤ÆÌ¤ÄêµÁÃͤ¬ÊÖ¤µ¤ì¡¢$@ ¤Ë¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤¬ÀßÄꤵ¤ì¤Þ¤¹¡£ ¥¨¥é¡¼¤¬¤Ê¤±¤ì¤Ð¡¢$@ ¤Ï¡¢¶õʸ»úÎó¤Ç¤¢¤ë¤³¤È¤¬Êݾڤµ¤ì¤Þ¤¹¡£¡¡ eval ¤ò¡¢STDERR ¤Ë·Ù¹ð¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤µ¤»¤Ê¤¤ÌÜۤ䡢 ·Ù¹ð¥á¥Ã¥»¡¼¥¸¤ò $@ ¤Ë³ÊǼ¤¹¤ëÌÜŪ¤Ç¤Ï»È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ ¤½¤Î¤è¤¦¤ÊÍÑÅӤǤϡ¢$SIG{__WARN__} µ¡Ç½¤ò»È¤¦¤«¡¢ no warnings 'all' ¤ò»È¤Ã¤Æ BLOCK ¤« EXPR ¤ÎÆâÉô¤Ç¤Î·Ù¹ð¤ò ¥ª¥Õ¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ warn, perlvar, warnings, perllexwarn ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

eval ¤Ï¡¢Ã×̿Ū¥¨¥é¡¼¤È¤Ê¤ë¤è¤¦¤Ê¤â¤Î¤ò¥È¥é¥Ã¥×¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¤«¤é¡¢ (socket ¤ä symlink ¤È¤¤¤Ã¤¿) ÆÃÄê¤Îµ¡Ç½¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤«¤ò¡¢ Ä´¤Ù¤ë¤¿¤á¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ die ±é»»»Ò¤¬Îã³°¤òȯÀ¸¤µ¤»¤ë¤â¤Î¤È¤¹¤ì¤Ð¡¢ ¤³¤ì¤Ï¤Þ¤¿¡¢Perl ¤ÎÎã³°Ê᪵¡Ç½¤Èª¤¨¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£

¼Â¹Ô¤¹¤ë¥³¡¼¥É¤¬ÊѤï¤é¤Ê¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢Ëè²ó¿Î̤κƥ³¥ó¥Ñ¥¤¥ë¤¹¤ë¤³¤È¤Ê¤·¤Ë¡¢ ¼Â¹Ô»þ¥¨¥é¡¼¤Î¥È¥é¥Ã¥×¤ò¹Ô¤Ê¤¦¤¿¤á¤Ë¡¢ eval-BLOCK ·Á¼°¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¥¨¥é¡¼¤¬¤¢¤ì¤Ð¡¢¤ä¤Ï¤ê $@ ¤ËÊÖ¤µ¤ì¤Þ¤¹¡£ Îã:

    # make divide-by-zero nonfatal
    eval { $answer = $a / $b; }; warn $@ if $@;
    # same thing, but less efficient
    eval '$answer = $a / $b'; warn $@ if $@;
    # a compile-time error
    eval { $answer = };                 # WRONG
    # a run-time error
    eval '$answer =';   # sets $@

eval{} ·Á¼°¤ò¥é¥¤¥Ö¥é¥ê¤ÎÎã³°¤òÊ᪤¹¤ë¤¿¤á¤Ë»È¤¦¤È¤­¤Ë¤Ï ÌäÂ꤬¤¢¤ê¤Þ¤¹¡£ ¸½ºß¤Î __DIE__ ¥Õ¥Ã¥¯¤Î¾õÂ֤Ϥۤܳμ¤˲õ¤ì¤Æ¤¤¤ë¤È¤¤¤¦Íýͳ¤Ç¡¢ ¥æ¡¼¥¶¡¼¤Î¥³¡¼¥É¤¬ÀßÄꤷ¤¿ __DIE__ ¥Õ¥Ã¥¯¤ò¼Â¹Ô¤·¤¿¤¯¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ ¤³¤ÎÌÜŪ¤Ë¤Ï°Ê²¼¤ÎÎã¤Î¤è¤¦¤Ë¡¢local $SIG{__DIE__} ¹½Â¤¤¬»È¤¨¤Þ¤¹¡£

    # a very private exception trap for divide-by-zero
    eval { local $SIG{'__DIE__'}; $answer = $a / $b; };
    warn $@ if $@;

¤³¤ì¤ÏÆÃ¤Ë¸²Ãø¤Ç¤¹¡£Í¿¤¨¤é¤ì¤¿ __DIE__ ¥Õ¥Ã¥¯¤Ï die ¤ò¤â¤¦°ìÅÙ ¸Æ¤Ó½Ð¤¹¤³¤È¤¬¤Ç¤­¡¢¤³¤ì¤Ë¤è¤Ã¤Æ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤òÊѤ¨¤ë¸ú²Ì¤¬¤¢¤ê¤Þ¤¹:

    # __DIE__ hooks may modify error messages
    {
       local $SIG{'__DIE__'} =
              sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
       eval { die "foo lives here" };
       print $@ if $@;                # prints "bar lives here"
    }

¤³¤ì¤Ïµ÷Î¥¤ÎÎ¥¤ì¤¿¹Ôư¤Ç¤¢¤ë¤¿¤á¡¢¤³¤Îľ´¶Åª¤Ç¤Ê¤¤¿¶¤ëÉñ¤¤¤Ï ¾­Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï½¤Àµ¤µ¤ì¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

eval ¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¡¢ ²¿¤¬Ä´¤Ù¤é¤ì¤ë¤«¤ËÆÃ¤ËÃí°Õ¤·¤Æ¤ª¤¯¤³¤È¤¬É¬ÍפǤ¹:

    eval $x;            # CASE 1
    eval "$x";          # CASE 2
    eval '$x';          # CASE 3
    eval { $x };        # CASE 4
    eval "\$$x++";      # CASE 5
    $$x++;              # CASE 6

¾åµ­¤Î CASE 1 ¤È CASE 2 ¤Îưºî¤ÏƱ°ì¤Ç¡¢ÊÑ¿ô $x Æâ¤Î ¥³¡¼¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£ (¤¿¤À¤·¡¢CASE 2 ¤Ç¤Ï¡¢É¬ÍפΤʤ¤¥À¥Ö¥ë¥¯¥©¡¼¥È¤Ë¤è¤Ã¤Æ¡¢ ÆÉ¤à¿Í¤¬²¿¤¬µ¯¤³¤ë¤«º®Í𤹤뤳¤È¤Ç¤·¤ç¤¦ (²¿¤âµ¯¤³¤ê¤Þ¤»¤ó¤¬)¡£) ƱÍÍ¤Ë CASE 3 ¤È CASE 4 ¤Îưºî¤âÅù¤·¤¯¡¢$x ¤ÎÃͤòÊÖ¤¹°Ê³°¤Ë ²¿¤â¤·¤Ê¤¤ $x ¤È¤¤¤¦¥³¡¼¥É¤ò¼Â¹Ô¤·¤Þ¤¹ (½ã¿è¤Ë¸«¤¿ÌܤÎÌäÂê¤Ç¡¢CASE 4 ¤¬¹¥¤Þ¤ì¤Þ¤¹¤¬¡¢ ¼Â¹Ô»þ¤Ç¤Ê¤¯¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤È¤¤¤¦ÍøÅÀ¤â¤¢¤ê¤Þ¤¹)¡£ CASE 5 ¤Î¾ì¹ç¤Ï¡¢Ä̾ï¥À¥Ö¥ë¥¯¥©¡¼¥È¤ò»ÈÍѤ·¤Þ¤¹¡£ ¤³¤Î¾õ¶·¤ò½ü¤±¤Ð¡¢CASE 6 ¤Î¤è¤¦¤Ë¡¢Ã±¤Ë ¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥Õ¥¡¥ì¥ó¥¹¤ò»È¤¨¤ÐÎɤ¤¤Ç¤·¤ç¤¦¡£

eval BLOCK ¤Ï¥ë¡¼¥×¤È¤·¤Æ °·¤ï¤ì¤Þ¤»¤ó¡£ ½¾¤Ã¤Æ¡¢next, last, redo ¤È¤¤¤Ã¤¿¥ë¡¼¥×À©¸æÊ¸¤Ç¥Ö¥í¥Ã¥¯¤«¤éÎ¥¤ì¤¿¤ê ºÆ¼Â¹Ô¤·¤¿¤ê¤Ï¤Ç¤­¤Þ¤»¤ó¡£

¤È¤Æ¤âÆÃ¼ì¤Ê¾ì¹ç¤È¤·¤Æ¡¢DB ¥Ñ¥Ã¥±¡¼¥¸Æâ¤Ç eval '' ¤ò¼Â¹Ô¤¹¤ë¤È¡¢ Ä̾ï¤Î¥ì¥­¥·¥«¥ë¥¹¥³¡¼¥×¤Ç¤Ï¤Ê¤¯¡¢¤³¤ì¤ò¸Æ¤Ó½Ð¤·¤¿ºÇ½é¤ÎÈó DB ¥³¡¼¥ÉÊҤΠ¥¹¥³¡¼¥×¤Ë¤Ê¤ê¤Þ¤¹¡£ Perl ¥Ç¥Ð¥Ã¥¬¤ò½ñ¤¤¤Æ¤¤¤ë¤Î¤Ç¤Ê¤¤¸Â¤ê¡¢ÉáÄ̤Ϥ³¤ì¤Ë¤Ä¤¤¤Æ¿´ÇÛ¤¹¤ëɬÍ×¤Ï ¤¢¤ê¤Þ¤»¤ó¡£

exec LIST
exec PROGRAM LIST

exec ´Ø¿ô¤Ï¡¢¥·¥¹¥Æ¥à¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¡¢Ìá¤Ã¤Æ¤Ï¤­¤Þ¤»¤ó¡£ Ìá¤Ã¤ÆÍߤ·¤¤¾ì¹ç¤Ë¤Ï¡¢exec¤Ç¤Ï¤Ê¤¯ system ´Ø¿ô¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ ¥³¥Þ¥ó¥É¤¬Â¸ºß¤»¤º¡¢¤·¤«¤â ¥·¥¹¥Æ¥à¤Î¥³¥Þ¥ó¥É¥·¥§¥ë·Ðͳ¤Ç¤Ê¤¯ ľÀÜ¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¤è¤¦¤È¤·¤¿¾ì¹ç¤Ë¤Î¤ß¤³¤Î´Ø¿ô¤Ï¼ºÇÔ¤·¤Æµ¶¤òÊÖ¤·¤Þ¤¹¡£

system ¤ÎÂå¤ï¤ê¤Ë exec ¤ò»È¤¦¤È¤¤¤¦¤è¤¯¤¢¤ë´Ö°ã¤¤¤òËɤ°¤¿¤á¤Ë¡¢ °ú¤­Â³¤¯Ê¸¤¬ die, warn, exit(-w ¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç - ¤Ç¤â¤¤¤Ä¤â¥»¥Ã¥È¤·¤Æ¤Þ¤¹¤è¤Í) °Ê³°¤Î¾ì¹ç¡¢Perl ¤Ï·Ù¹ð¤ò½Ð¤·¤Þ¤¹¡£ ¤â¤· ËÜÅö¤Ë exec ¤Î¸å¤Ë¾¤Îʸ¤ò½ñ¤­¤¿¤¤¾ì¹ç¡¢ °Ê²¼¤Î¤É¤Á¤é¤«¤Î¥¹¥¿¥¤¥ë¤ò»È¤¦¤³¤È¤Ç·Ù¹ð¤ò²óÈò¤Ç¤­¤Þ¤¹:

    exec ('foo')   or print STDERR "couldn't exec foo: $!";
    { exec ('foo') }; print STDERR "couldn't exec foo: $!";

LIST ¤ËÊ£¿ô¤Î°ú¿ô¤¬¤¢¤ë¾ì¹ç¤«¡¢LIST ¤¬Ê£¿ô¤ÎÃͤò»ý¤Ä ÇÛÎó¤Î¾ì¹ç¤Ë¤Ï¡¢LIST ¤Î°ú¿ô¤ò»È¤Ã¤Æ¡¢execvp(3) ¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ 1 ¤Ä¤Î¥¹¥«¥é°ú¿ô¤Î¤ß¤Þ¤¿¤ÏÍ×ÁǤ¬ 1 ¤Ä¤ÎÇÛÎó¤Î¾ì¹ç¤Ë¤Ï¡¢¤½¤Î°ú¿ô¤«¤é ¥·¥§¥ë¤Î¥á¥¿Ê¸»ú¤ò¥Á¥§¥Ã¥¯¤·¡¢¤â¤·¡¢¥á¥¿Ê¸»ú¤¬¤¢¤ì¤Ð¡¢ °ú¿ôÁ´ÂΤò¥·¥¹¥Æ¥à¤Î¥³¥Þ¥ó¥É¥·¥§¥ë(¤³¤ì¤ÏUnix ¤Ç¤Ï /bin/sh -c ¤Ç¤¹¤¬¡¢¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹)¤ËÅϤ·¤Æ²òÀϤµ¤»¤Þ¤¹¡£ ¤â¤·¡¢¥á¥¿¥­¥ã¥é¥¯¥¿¤¬¤Ê¤±¤ì¤Ð¡¢¤½¤Î°ú¿ô¤òñ¸ì¤Ëʬ¤±¡¢ ¤è¤ê¸úΨŪ¤Ê execvp ¤ËľÀÜÅϤ·¤Þ¤¹¡£ Îã:

    exec '/bin/echo', 'Your arguments are: ', @ARGV;
    exec "sort $outfile | uniq";

Âè°ì°ú¿ô¤Ë»ØÄꤹ¤ë¤â¤Î¤òËÜÅö¤Ë¼Â¹Ô¤·¤¿¤¤¤¬¡¢¼Â¹Ô¤¹¤ë ¥×¥í¥°¥é¥à¤ËÂФ·¤ÆÊ̤Î̾Á°¤ò¶µ¤¨¤¿¤¤¾ì¹ç¤Ë¤Ï¡¢LIST¤ÎÁ°¤Ë¡¢ ¡Ö´ÖÀÜ¥ª¥Ö¥¸¥§¥¯¥È¡×(¥³¥ó¥Þ¤Ê¤·) ¤È¤·¤Æ¡¢¼ÂºÝ¤Ë ¼Â¹Ô¤·¤¿¤¤¥×¥í¥°¥é¥à¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ (¤³¤ì¤Ë¤è¤Ã¤Æ¡¢LIST ¤Ëñ°ì¤Î¥¹¥«¥é¤·¤«¤Ê¤¯¤Æ¤â¡¢Ê£¿ô ÃͤΥꥹ¥È¤Ç¤¢¤ë¤è¤¦¤Ë¡¢LIST ¤Î²ò¼á¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£) Îã:

    $shell = '/bin/csh';
    exec $shell '-sh';          # pretend it's a login shell

¤¢¤ë¤¤¤Ï¡¢¤è¤êľÀÜŪ¤Ë¡¢

    exec {'/bin/csh'} '-sh';    # pretend it's a login shell

°ú¿ô¤¬¥·¥¹¥Æ¥à¥·¥§¥ë¤Ç¼Â¹Ô¤µ¤ì¤ë¤È¤­¡¢·ë²Ì¤Ï¥·¥§¥ë¤Î´ñÊʤÈǽÎϤˤè¤Ã¤Æ ÊѤï¤ê¤Þ¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï `STRING` in perlop ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

exec ¤ä system ¤Ç´ÖÀÜ¥ª¥Ö¥¸¥§¥¯¥È¤ò»È¤¦¤Î¤â¤è¤ê°ÂÁ´¤Ç¤¹¡£ ¤³¤Î»È¤¤Êý(system() ¤Ç¤âƱÍͤˤ¦¤Þ¤¯Æ°¤­¤Þ¤¹)¤Ï¡¢¤¿¤È¤¨°ú¿ô¤¬°ì¤Ä¤À¤±¤Î ¾ì¹ç¤â¡¢Ê£¿ô¤ÎÃͤò»ý¤Ä¥ê¥¹¥È¤È¤·¤Æ°ú¿ô¤ò²ò¼á¤¹¤ë¤³¤È¤ò¶¯À©¤·¤Þ¤¹¡£ ¤³¤ÎÊýË¡¤Ç¡¢¥·¥§¥ë¤Ë¤è¤ë¥ï¥¤¥ë¥É¥«¡¼¥ÉŸ³«¤ä¡¢¶õÇò¤Ë¤è¤ëñ¸ì¤Îʬ³ä¤«¤é ¼é¤é¤ì¤Þ¤¹¡£

    @args = ( "echo surprise" );
    exec @args;               # subject to shell escapes
                                # if @args == 1
    exec { $args[0] } @args;  # safe even with one-arg list

´ÖÀÜ¥ª¥Ö¥¸¥§¥¯¥È¤Ê¤·¤Î°ì¤ÄÌܤΥС¼¥¸¥ç¥ó¤Ç¤Ï¡¢echo ¥×¥í¥°¥é¥à¤¬¼Â¹Ô¤µ¤ì¡¢ "surprise" ¤¬°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Þ¤¹¡£ Æó¤ÄÌܤΥС¼¥¸¥ç¥ó¤Ç¤Ï°ã¤¤¤Þ¤¹ -- ʸ»úÄ̤ê "echo surprise" ¤È¤¤¤¦Ì¾Á°¤Î ¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤·¤è¤¦¤È¤·¤Æ¡¢¸«¤Ä¤«¤é¤Ê¤¤¤Î¤Ç¡¢¼ºÇÔ¤·¤¿¤³¤È¤ò¼¨¤¹¤¿¤á¤Ë $? ¤ËÈó 0 ¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤¹¡£

v5.6.0 ¤«¤é¡¢Perl ¤Ï exec ¤ÎÁ°¤Ë½ÐÎÏÍѤ˳«¤«¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë¤ò ¥Õ¥é¥Ã¥·¥å¤·¤è¤¦¤È¤·¤Þ¤¹¤¬¡¢¤³¤ì¤ËÂбþ¤·¤Æ¤¤¤Ê¤¤¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤â¤¢¤ê¤Þ¤¹ (perlport ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£ °ÂÁ´¤Î¤¿¤á¤Ë¤Ï¡¢½ÐÎϤ¬½ÅÊ£¤¹¤ë¤Î¤òÈò¤±¤ë¤¿¤á¤Ë¡¢Á´¤Æ¤Î¥ª¡¼¥×¥ó¤·¤Æ¤¤¤ë ¥Ï¥ó¥É¥ë¤ËÂФ·¤Æ $| (English ¥â¥¸¥å¡¼¥ë¤Ç¤Ï $AUTOFLUSH) ¤òÀßÄꤹ¤ë¤«¡¢ IO::Handle ¥â¥¸¥å¡¼¥ë¤Î autoflush() ¥á¥½¥Ã¥É¤ò¤ò¸Æ¤ÖɬÍפ¬ ¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

exec ¤Ï END ¥Ö¥í¥Ã¥¯¤ä¡¢¥ª¥Ö¥¸¥§¥¯¥È¤Î DESTROY ¥á¥½¥Ã¥É¤ò ¸Æ¤Ó½Ð¤µ¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

exists EXPR

¥Ï¥Ã¥·¥åÍ×ÁǤ«ÇÛÎóÍ×ÁǤò¼¨¤¹É½¸½¤¬Í¿¤¨¤é¤ì¡¢ »ØÄꤵ¤ì¤¿Í×ÁǤ¬¡¢¥Ï¥Ã¥·¥å¤«ÇÛÎó¤Ë¸ºß¤¹¤ì¤Ð¡¢ ¤¿¤È¤¨Âбþ¤¹¤ë value ¤¬Ì¤ÄêµÁ¤Ç¤â¿¿¤òÊÖ¤·¤Þ¤¹¡£ Í×ÁǤ¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤Ï¼«Æ°³èÀ­²½¤µ¤ì¤Þ¤»¤ó¡£

    print "Exists\n"    if exists $hash{$key};
    print "Defined\n"   if defined $hash{$key};
    print "True\n"      if $hash{$key};
    print "Exists\n"    if exists $array[$index];
    print "Defined\n"   if defined $array[$index];
    print "True\n"      if $array[$index];

¥Ï¥Ã¥·¥å¤Þ¤¿¤ÏÇÛÎóÍ×ÁǤϡ¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤È¤­¤Ë¤Î¤ß¿¿¤È¤Ê¤ê¡¢ ¸ºß¤·¤Æ¤¤¤ë¤È¤­¤Ë¤Î¤ßÄêµÁ¤µ¤ì¤Þ¤¹¤¬¡¢µÕ¤Ïɬ¤º¤·¤â¿¿¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

°ú¿ô¤È¤·¤Æ¥µ¥Ö¥ë¡¼¥Á¥ó¤Î̾Á°¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¡¢ »ØÄꤵ¤ì¤¿¥µ¥Ö¥ë¡¼¥Á¥ó¤¬Àë¸À¤µ¤ì¤Æ¤¤¤ì¤Ð(¤¿¤È¤¨Ì¤ÄêµÁ¤Ç¤â) ¿¿¤òÊÖ¤·¤Þ¤¹¡£ exists ¤ä defined ¤Î¤¿¤á¤Ë¸ÀµÚ¤µ¤ì¤Æ¤¤¤ë¥µ¥Ö¥ë¡¼¥Á¥ó̾¤Ï Àë¸À¤È¤·¤Æ¤Î¥«¥¦¥ó¥È¤ËÆþ¤ê¤Þ¤»¤ó¡£ ¸ºß¤·¤Ê¤¤¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç¤â¸Æ¤Ó½Ð¤·²Äǽ¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤: ¥Ñ¥Ã¥±¡¼¥¸¤¬ AUTOLOAD ¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤Æ¡¢ºÇ½é¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿»þ¤Ë ¸ºß¤òºî¤ê½Ð¤¹¤«¤â¤·¤ì¤Þ¤»¤ó -- perlsub ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

    print "Exists\n"    if exists &subroutine;
    print "Defined\n"   if defined &subroutine;

ºÇ½ªÅª¤ÊÁàºî¤¬¥Ï¥Ã¥·¥å¤äÇÛÎó¤Î key ¤Ë¤è¤ë¸¡º÷¤Þ¤¿¤Ï¥µ¥Ö¥ë¡¼¥Á¥ó̾¤Ç¤¢¤ë¸Â¤ê¤Ï¡¢ EXPR ¤Ë¤ÏǤ°Õ¤ÎÊ£»¨¤Ê¼°¤òÃÖ¤¯¤³¤È¤¬¤Ç¤­¤Þ¤¹:

    if (exists $ref->{A}->{B}->{$key})  { }
    if (exists $hash{A}{B}{$key})       { }
    if (exists $ref->{A}->{B}->[$ix])   { }
    if (exists $hash{A}{B}[$ix])        { }
    if (exists &{$ref->{A}{B}{$key}})   { }

¥Í¥¹¥È¤·¤¿ÇÛÎó¤ä¥Ï¥Ã¥·¥å¤Î°ìÈÖ¿¼¤¤Éôʬ¤Ï¡¢¤½¤Î¸ºß¤ò¥Æ¥¹¥È¤·¤¿¤À¤±¤Ç¤Ï ¸ºß¤¹¤ë¤è¤¦¤Ë¤Ï¤Ê¤ê¤Þ¤»¤ó¤¬¡¢ÅÓÃæ¤Î¤â¤Î¤Ï¸ºß¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ ½¾¤Ã¤Æ $ref->{"A"} ¤È $ref->{"A"}->{"B"} ¤Ï¾åµ­¤Î $key ¤Î ¸ºß¤ò¥Æ¥¹¥È¤·¤¿¤³¤È¤Ë¤è¤Ã¤ÆÂ¸ºß¤¹¤ë¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢Ìð°õ±é»»»Ò¤¬»È¤ï¤ì¤ë¤È¤³¤í¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î¤ò´Þ¤à¤É¤³¤Ç¤Ç¤â µ¯¤³¤ê¤Þ¤¹¡£

    undef $ref;
    if (exists $ref->{"Some key"})      { }
    print $ref;             # prints HASH(0x80d3d5c)

°ìÌܸ«¤¿¤À¤±¤Ç¤Ï -- ¤¢¤ë¤¤¤ÏÆóÌܸ«¤Æ¤â -- ¶Ã¤«¤µ¤ì¤ë¡¢º¸ÊÕÃÍ¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Î ¼«Æ°Í­¸ú²½¤Ï¾­Íè¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï½¤Àµ¤µ¤ì¤ë¤Ç¤·¤ç¤¦¡£

exists() ¤Î°ú¿ô¤È¤·¤Æ¥µ¥Ö¥ë¡¼¥Á¥ó̾¤Ç¤Ê¤¯¥µ¥Ö¥ë¡¼¥Á¥ó¸Æ¤Ó½Ð¤·¤ò»È¤¦¤È¡¢ ¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£

    exists &sub;        # OK
    exists &sub();      # Error
exit EXPR
exit

EXPR ¤òɾ²Á¤·¡¢Â¨ºÂ¤Ë¤½¤ÎÃͤò»ý¤Ã¤Æ½ªÎ»¤·¤Þ¤¹¡£ Îã:

    $ans = <STDIN>;
    exit 0 if $ans =~ /^[Xx]/;

die ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ EXPR ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢¥¹¥Æ¡¼¥¿¥¹¤ò 0 ¤È¤·¤Æ½ªÎ»¤·¤Þ¤¹¡£ EXPR ¤ÎÃͤȤ·¤Æ¹­¤¯ÍøÍѲÄǽ¤Ê¤Î¤Ï 0 ¤¬À®¸ù¤Ç 1 ¤¬¥¨¥é¡¼¤È¤¤¤¦¤³¤È¤À¤±¤Ç¤¹¡£ ¤½¤Î¾¤ÎÃͤϡ¢ Perl ¤¬¼Â¹Ô¤µ¤ì¤ë´Ä¶­¤Ë¤è¤Ã¤Æ°Û¤Ê¤ë²ò¼á¤¬¤µ¤ì¤ë ²ÄǽÀ­¤¬¤¢¤ê¤Þ¤¹¡£ Î㤨¤Ð¡¢sendmail ÅþÃå¥á¡¼¥ë¥Õ¥£¥ë¥¿¤«¤é 69 (EX_UNAVAILABLE) ¤Ç½ªÎ»¤¹¤ë¤È ¥á¡¼¥é¡¼¤Ï¥¢¥¤¥Æ¥à¤òÇÛ㤻¤º¤Ëº¹¤·Ìᤷ¤Þ¤¹¤¬¡¢ ¤³¤ì¤Ï¤¤¤Ä¤Ç¤â¿¿¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

狼¤¬È¯À¸¤·¤¿¥¨¥é¡¼¤ò¥È¥é¥Ã¥×¤·¤è¤¦¤È¹Í¤¨¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ë¾ì¹ç¤Ï¡¢ ¥µ¥Ö¥ë¡¼¥Á¥ó¤ÎÃæÃÇ¤Ë exit ¤ò»È¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ Âå¤ï¤ê¤Ë eval ¤Ç¥È¥é¥Ã¥×¤Ç¤­¤ë die ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

exit() ´Ø¿ô¤Ï¾ï¤Ëľ¤Á¤Ë½ªÎ»¤¹¤ë¤ï¤±¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¤Þ¤º¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ë END ¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¤¬¡¢ END ¥ë¡¼¥Á¥ó¼«¿È¤Ï exit ¤ò»ß¤á¤é¤ì¤Þ¤»¤ó¡£ ƱÍͤˡ¢¸Æ¤Ó½Ð¤¹É¬ÍפΤ¢¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Ç¥¹¥È¥é¥¯¥¿¤Ï ¤¹¤Ù¤Æ¡¢¼ÂºÝ¤Î½ªÎ»Á°¤Ë¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ ¤³¤ì¤¬ÌäÂê¤Ë¤Ê¤ë¾ì¹ç¤Ï¡¢END ¤ä¥Ç¥¹¥È¥é¥¯¥¿¤¬¼Â¹Ô¤µ¤ì¤ë¤³¤È¤ò Ëɤ°¤¿¤á¤Ë POSIX:_exit($status) ¤ò¸Æ¤Ó½Ð¤·¤Æ¤¯¤À¤µ¤¤¡£ ¾Ü¤·¤¯¤Ï perlmod ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

exp EXPR
exp

e (¼«Á³Âпô¤ÎÄì) ¤Î EXPR ¾è¤òÊÖ¤·¤Þ¤¹¡£¡¡ EXPR ¤ò¾Êά¤·¤¿¾ì¹ç¤Ë¤Ï¡¢exp($_) ¤òÊÖ¤·¤Þ¤¹¡£

fcntl FILEHANDLE,FUNCTION,SCALAR

fcntl(2) ´Ø¿ô¤ò¼ÂÁõ¤·¤Þ¤¹¡£ Àµ¤·¤¤Äê¿ôÄêµÁ¤òÆÀ¤ë¤¿¤á¤Ë¡¢¤Þ¤º¡¢

    use Fcntl;

¤È½ñ¤¯¤³¤È¤¬É¬ÍפǤ·¤ç¤¦¡£ °ú¿ô¤Î½èÍý¤ÈÊÖ¤êÃͤˤĤ¤¤Æ¤Ï¡¢²¼µ­¤Î ioctl ¤ÈƱÍÍ¤ËÆ°ºî¤·¤Þ¤¹¡£ Îã:

    use Fcntl;
    fcntl($filehandle, F_GETFL, $packed_return_buffer)
        or die "can't fcntl F_GETFL: $!";

fcntl ¤«¤é¤ÎÊÖ¤êÃͤΥÁ¥§¥Ã¥¯¤Ë defined ¤ò»È¤¦É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡£ ioctl ¤È°ã¤Ã¤Æ¡¢fnctl ¤Ï¥·¥¹¥Æ¥à¥³¡¼¥ë¤Î·ë²Ì¤¬ 0 ¤À¤Ã¤¿¾ì¹ç¤Ï "0 ¤À¤¬¿¿"¤òÊÖ¤·¤Þ¤¹¡£ ¤³¤Îʸ»úÎó¤Ï¿¿µ¶ÃÍ¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¿¿¤È¤Ê¤ê¡¢ ¿ôÃÍ¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï 0 ¤Ë¤Ê¤ê¤Þ¤¹¡£ ¤³¤ì¤Ï¤Þ¤¿¡¢ÉÔŬÀڤʿôÃÍÊÑ´¹¤Ë´Ø¤¹¤ëÄ̾ï¤Î -w ·Ù¹ð¤ò²óÈò¤·¤Þ¤¹¡£

fcntl(2) ¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¥Þ¥·¥ó¤Ç¤Ï¡¢fcntl¤ÏÃ×̿Ū¥¨¥é¡¼¤ò °ú¤­µ¯¤³¤¹¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¥·¥¹¥Æ¥à¤Ç¤É¤Î´Ø¿ô¤¬ÍøÍѲÄǽ¤«¤Ë¤Ä¤¤¤Æ¤Ï Fcntl ¥â¥¸¥å¡¼¥ë¤ä fcntl(2) man ¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

¤³¤ì¤Ï REMOTE ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ò¥·¥¹¥Æ¥à¥ì¥Ù¥ë¤Ç Èó¥Ö¥í¥Ã¥¯¥â¡¼¥É¤Ë¥»¥Ã¥È¤¹¤ëÎã¤Ç¤¹¡£ ¤¿¤À¤·¡¢ $| ¤ò¼«Ê¬¤Ç´ÉÍý¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£

    use Fcntl qw(F_GETFL F_SETFL O_NONBLOCK);
    $flags = fcntl(REMOTE, F_GETFL, 0)
                or die "Can't get flags for the socket: $!\n";
    $flags = fcntl(REMOTE, F_SETFL, $flags | O_NONBLOCK)
                or die "Can't set flags for the socket: $!\n";
fileno FILEHANDLE

¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤ËÂФ¹¤ë¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤òÊÖ¤·¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤¬¥ª¡¼¥×¥ó¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï̤ÄêµÁÃͤòÊÖ¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¼ç¤Ë select ¤äÄã¥ì¥Ù¥ë POSIX tty Áàºî¤ËÂФ¹¤ë¡¢¥Ó¥Ã¥È¥Þ¥Ã¥×¤ò ¹½À®¤¹¤ë¤È¤­¤ËÊØÍø¤Ç¤¹¡£ FILEHANDLE ¤¬¼°¤Ç¤¢¤ì¤Ð¡¢ ¤½¤ÎÃͤ¬´ÖÀÜ¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë(ÉáÄ̤Ï̾Á°)¤È¤·¤Æ»È¤ï¤ì¤Þ¤¹¡£

¤³¤ì¤ò¡¢Æó¤Ä¤Î¥Ï¥ó¥É¥ë¤¬Æ±¤¸¼±Ê̻Ҥò»²¾È¤·¤Æ¤¤¤ë¤«¤É¤¦¤«¤ò¸«¤Ä¤±¤ë¤Î¤Ë »È¤¨¤Þ¤¹:

    if (fileno(THIS) == fileno(THAT)) {
        print "THIS and THAT are dups\n";
    }

(open ¤Î¿·µ¡Ç½¤Ë¤è¤Ã¤Æ¥á¥â¥ê¤ËÀܳ¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ï¡¢ ³«¤¤¤Æ¤¤¤ë»þ¤Ç¤â̤ÄêµÁÃͤòÊÖ¤·¤Þ¤¹¡£)

flock FILEHANDLE,OPERATION

FILEHANDLE ¤ËÂФ·¤Æ flock(2)¡¢¤Þ¤¿¤Ï¤½¤Î¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ À®¸ù»þ¤Ë¤Ï¿¿¤ò¡¢¼ºÇÔ»þ¤Ë¤Ïµ¶¤òÊÖ¤·¤Þ¤¹¡£ flock(2), fcntl(2) ¥í¥Ã¥¯, lockf(3) ¤Î¤¤¤º¤ì¤«¤ò¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤ ¥Þ¥·¥ó¤Ç»È¤¦¤È¡¢Ã×̿Ū¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤¹¡£ flock ¤Ï Perl ¤Î°Ü¿¢À­¤Î¤¢¤ë¥Õ¥¡¥¤¥ë¥í¥Ã¥¯¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ç¤¹¡£ ¤·¤«¤·¥ì¥³¡¼¥É¤Ç¤Ï¤Ê¤¯¡¢¥Õ¥¡¥¤¥ëÁ´ÂΤΤߤò¥í¥Ã¥¯¤·¤Þ¤¹¡£

ÌÀÇò¤Ç¤Ï¤Ê¤¤¤â¤Î¤Î¡¢ÅÁÅýŪ¤Ê flock ¤Îưºî¤È¤·¤Æ¤Ï¡¢¥í¥Ã¥¯¤¬ÆÀ¤é¤ì¤ë¤Þ¤Ç ̵¸Â¤ËÂÔ¤Á³¤±¤ë¤â¤Î¤È¡¢Ã±¤Ë´«¹ðŪ¤Ë ¥í¥Ã¥¯¤¹¤ë¤â¤Î¤ÎÆó¤Ä¤¬¤¢¤ê¤Þ¤¹¡£ ¤³¤Î¤è¤¦¤Ê¼«Í³ºÛÎ̤Υí¥Ã¥¯¤Ï¤è¤ê½ÀÆð¤Ç¤¹¤¬¡¢Êݾ㤵¤ì¤ë¤â¤Î¤Ï¤è¤ê¾¯¤Ê¤¤¤Ç¤¹¡£ ¤³¤ì¤Ï¡¢flock ¤ò»È¤ï¤Ê¤¤¥×¥í¥°¥é¥à¤¬ flock ¤Ç¥í¥Ã¥¯¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò ½ñ¤­´¹¤¨¤ë¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¡¢perlport¡¢¥·¥¹¥Æ¥à¸ÇÍ­¤Î¥É¥­¥å¥á¥ó¥È¡¢¥·¥¹¥Æ¥à¸ÇÍ­¤Î ¥í¡¼¥«¥ë¤Î man ¥Ú¡¼¥¸¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ °Ü¿¢À­¤Î¤¢¤ë¥×¥í¥°¥é¥à¤ò½ñ¤¯¾ì¹ç¤Ï¡¢ÅÁÅýŪ¤Ê¿¶¤ëÉñ¤¤¤ò²¾Äꤹ¤ë¤Î¤¬ ¥Ù¥¹¥È¤Ç¤¹¡£ (¤·¤«¤·°Ü¿¢À­¤Î¤Ê¤¤¥×¥í¥°¥é¥à¤ò½ñ¤¯¾ì¹ç¤Ï¡¢¼«¿È¤Î¥·¥¹¥Æ¥à¤ÎÀ­ÊÊ(¤·¤Ð¤·¤Ð ¡Ö»ÅÍ͡פȸƤФì¤Þ¤¹)¤Ë¹ç¤ï¤»¤Æ½ñ¤¯¤³¤È¤â´°Á´¤Ë¼«Í³¤Ç¤¹¡£ ÌÕÌÜŪ¤Ë°Ü¿¢À­¤Ë¸Ç¼¹¤¹¤ë¤³¤È¤Ç¡¢¤¢¤Ê¤¿¤Îºî¶È¤ò»Å¾å¤²¤ë¤Î¤ò¼ÙË⤹¤ë¤Ù¤­¤Ç¤Ï ¤¢¤ê¤Þ¤»¤ó¡£)

OPERATION ¤Ï LOCK_SH, LOCK_EX, LOCK_UN ¤Î¤¤¤º¤ì¤«¤Ç¡¢LOCK_NB ¤È ÁȤ߹ç¤ï¤µ¤ì¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤é¤ÎÄê¿ô¤ÏÅÁÅýŪ¤Ë¤Ï 1, 2, 8, 4 ¤ÎÃͤò»ý¤Á¤Þ¤¹¤¬¡¢Fcntl ¥â¥¸¥å¡¼¥ë¤«¤é ¥·¥ó¥Ü¥ë̾¤òÆÈΩ¤·¤Æ¥¤¥ó¥Ý¡¼¥È¤¹¤ë¤«¡¢ ':flock' ¥¿¥°¤ò»È¤¦¥°¥ë¡¼¥×¤È¤·¤Æ¡¢ ¥·¥ó¥Ü¥ë̾¤ò¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ LOCK_SH ¤Ï¶¦Í­¥í¥Ã¥¯¤òÍ׵ᤷ¡¢LOCK_EX ¤ÏÇÓ¾¥í¥Ã¥¯¤òÍ׵ᤷ¡¢LOCK_UN ¤Ï Á°²óÍ׵ᤷ¤¿¥í¥Ã¥¯¤ò³«Êü¤·¤Þ¤¹¡£ LOCK_NB ¤È LOCK_SH ¤« LOCK_EX ¤¬¥Ó¥Ã¥Èñ°Ì¤ÎÏÀÍýϤµ¤ì¤ë¤È¡¢flock ¤Ï ¥í¥Ã¥¯¤ò¼èÆÀ¤¹¤ë¤Þ¤ÇÂԤĤΤǤϤʤ¯¡¢¤¹¤°¤ËÊÖ¤ê¤Þ¤¹(¥í¥Ã¥¯¤¬¼èÆÀ¤Ç¤­¤¿¤« ¤É¤¦¤«¤ÏÊÖ¤êÃͤòÄ´¤Ù¤Þ¤¹)¡£

ÉÔ°ìÃפβÄǽÀ­¤òÈò¤±¤ë¤¿¤á¤Ë¡¢Perl ¤Ï¥Õ¥¡¥¤¥ë¤ò¥í¥Ã¥¯¡¢¥¢¥ó¥í¥Ã¥¯¤¹¤ëÁ°¤Ë FILEHANDLE ¤ò¥Õ¥é¥Ã¥·¥å¤·¤Þ¤¹¡£

lockf(3) ¤ÇºîÀ®¤µ¤ì¤¿¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ï¶¦Í­¥í¥Ã¥¯¤òÄ󶡤»¤º¡¢ FILEHANDLE ¤¬½ñ¤­¹þ¤ß¥â¡¼¥É¤Ç³«¤¤¤Æ¤¤¤ë¤³¤È¤òɬÍפȤ¹¤ë¤³¤È¤Ë Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤ì¤Ï lockf(3) ¤¬¼ÂÁõ¤·¤Æ¤¤¤ëưºî¤Ç¤¹¡£ ¤·¤«¤·¡¢Á´¤Æ¤Ç¤Ï¤Ê¤¤¤Ë¤·¤Æ¤â¤Û¤È¤ó¤É¤Î¥·¥¹¥Æ¥à¤Ç¤Ï fcntl(2) ¤ò»È¤Ã¤Æ lockf(3) ¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¤Î¤Ç¡¢°Û¤Ê¤Ã¤¿Æ°ºî¤Ç¿¤¯¤Î¿Í¡¹¤òº®Í𤵤»¤ë¤³¤È¤Ï ¤Ê¤¤¤Ï¤º¤Ç¤¹¡£

flock(3) ¤Î fcntl(2) ¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ï¡¢ LOCK_SH ¤ò»È¤¦¤¿¤á¤Ë¤Ï FILEHANDLE ¤òÆÉ¤ß¹þ¤ß¤Ç³«¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¡¢LOCK_EX ¤ò»È¤¦¤¿¤á¤Ë¤Ï ½ñ¤­¹þ¤ß¤Ç³«¤¤¤Æ¤¤¤ëɬÍפ¬¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£

¥Í¥Ã¥È¥ï¡¼¥¯±Û¤·¤Ë¤Ï¥í¥Ã¥¯¤Ç¤­¤Ê¤¤ flock ¤â¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤; ¤³¤Î¤¿¤á¤Ë¤Ï¡¢¤è¤ê¥·¥¹¥Æ¥à°Í¸¤Ê fcntl ¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ Perl ¤Ë¥·¥¹¥Æ¥à¤Î flock(2) ´Ø¿ô¤ò̵»ë¤µ¤»¡¢¼«¿È¤Î fcntl(2) ¥Ù¡¼¥¹¤Î ¥¨¥ß¥å¥ì¡¼¥·¥ç¥ó¤ò»È¤¦¾ì¹ç¤Ï¡¢perl ¤òÀßÄꤹ¤ë¤È¤­¤Ë Configure ¥×¥í¥°¥é¥à¤Ë -Ud_flock ¥ª¥×¥·¥ç¥ó¤òÅϤ·¤Æ¤¯¤À¤µ¤¤¡£

BSD ¥·¥¹¥Æ¥à¤Ç¤Î¥á¡¼¥ë¥Ü¥Ã¥¯¥¹¤Ø¤ÎÄɲýèÍý¤ÎÎã¤ò¼¨¤·¤Þ¤¹¡£

    use Fcntl ':flock'; # import LOCK_* constants
    sub lock {
        flock(MBOX,LOCK_EX);
        # and, in case someone appended
        # while we were waiting...
        seek(MBOX, 0, 2);
    }
    sub unlock {
        flock(MBOX,LOCK_UN);
    }
    open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")
            or die "Can't open mailbox: $!";
    lock();
    print MBOX $msg,"\n\n";
    unlock();

¿¿¤Î flock() ¤ËÂбþ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¥í¥Ã¥¯¤Ï fork() ¤òÄ̤·¤Æ ·Ñ¾µ¤µ¤ì¤ë¤Î¤ËÂФ·¤Æ¡¢¤è¤êÉÔ°ÂÄê¤Ê fcntl() ¤ËÍê¤é¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¾ì¹ç¡¢ ¥µ¡¼¥Ð¤ò½ñ¤¯¤Î¤Ï¤è¤êÆñ¤·¤¯¤Ê¤ê¤Þ¤¹¡£

¤½¤Î¾¤Î flock() ¤ÎÎã¤È¤·¤Æ¤Ï DB_File ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

fork

Ʊ¤¸¥×¥í¥°¥é¥à¤ÎƱ¤¸ÃÏÅÀ¤«¤é³«»Ï¤¹¤ë¿·¤·¤¤¥×¥í¥»¥¹¤òºîÀ®¤¹¤ë¤¿¤á¤Ë ¥·¥¹¥Æ¥à¥³¡¼¥ë fork(2) ¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ ¿Æ¥×¥í¥»¥¹¤Ë¤Ï¡¢¥Á¥ã¥¤¥ë¥É¥×¥í¥»¥¹¤Î pid ¤ò¡¢ ¥Á¥ã¥¤¥ë¥É¥×¥í¥»¥¹¤Ë 0 ¤òÊÖ¤·¤Þ¤¹¤¬¡¢ fork ¤Ë¼ºÇÔ¤·¤¿¤È¤­¤Ë¤Ï¡¢undef¤òÊÖ¤·¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ëµ­½Ò»Ò(¤ª¤è¤Óµ­½Ò»Ò¤Ë´ØÏ¢¤¹¤ë¥í¥Ã¥¯)¤Ï¶¦Í­¤µ¤ì¡¢ ¤½¤Î¾¤ÎÁ´¤Æ¤Ï¥³¥Ô¡¼¤µ¤ì¤Þ¤¹¡£ fork() ¤ËÂбþ¤¹¤ë¤Û¤È¤ó¤É¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ ¤³¤ì¤ò¶Ë¤á¤Æ¸úΨŪ¤Ë¤¹¤ë¤¿¤á¤Ë¿Âç¤ÊÅØÎϤ¬Ê§¤ï¤ì¤Æ¤­¤Þ¤·¤¿ (Î㤨¤Ð¡¢¥Ç¡¼¥¿¥Ú¡¼¥¸¤Ø¤Î copy-on-write ¥Æ¥¯¥Î¥í¥¸¡¼¤Ê¤É¤Ç¤¹)¡£ ¤³¤ì¤Ï¤³¤³ 20 ǯ¤Ë¤ï¤¿¤ë¥Þ¥ë¥Á¥¿¥¹¥¯¤Ë´Ø¤¹¤ë¼çÍפʥѥé¥À¥¤¥à¤È¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£

v5.6.0 ¤«¤é¡¢Perl ¤Ï»Ò¥×¥í¥»¥¹¤ò fork ¤¹¤ëÁ°¤Ë½ÐÎÏÍѤ˥ª¡¼¥×¥ó¤·¤Æ¤¤¤ëÁ´¤Æ¤Î ¥Õ¥¡¥¤¥ë¤ò¥Õ¥é¥Ã¥·¥å¤·¤è¤¦¤È¤·¤Þ¤¹¤¬¡¢¤³¤ì¤ËÂбþ¤·¤Æ¤¤¤Ê¤¤¥×¥é¥Ã¥È¥Õ¥©¡¼¥à¤â ¤¢¤ê¤Þ¤¹(perlport ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£ °ÂÁ´¤Î¤¿¤á¤Ë¤Ï¡¢½ÐÎϤ¬½ÅÊ£¤¹¤ë¤Î¤òÈò¤±¤ë¤¿¤á¤Ë¡¢ Á´¤Æ¤Î¥ª¡¼¥×¥ó¤·¤Æ¤¤¤ë¥Ï¥ó¥É¥ë¤ËÂФ·¤Æ $| (English ¥â¥¸¥å¡¼¥ë¤Ç¤Ï $AUTOFLUSH) ¤òÀßÄꤹ¤ë¤«¡¢ IO::Handle ¥â¥¸¥å¡¼¥ë¤Î autoflush()¥á¥½¥Ã¥É¤ò¤ò¸Æ¤ÖɬÍפ¬ ¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡£

¥Á¥ã¥¤¥ë¥É¥×¥í¥»¥¹¤Î½ªÎ»¤òÂÔ¤¿¤º¤Ë¡¢fork ¤ò·«¤êÊÖ¤»¤Ð¡¢ ¥¾¥ó¥Ó¤ò¤¿¤á¤³¤à¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£ $SIG{CHLD} ¤Ë "IGNORE" ¤ò»ØÄꤹ¤ë¤³¤È¤Ç¤³¤ì¤ò²óÈò¤Ç¤­¤ë¥·¥¹¥Æ¥à¤â¤¢¤ê¤Þ¤¹¡£ fork ¤È¾ÃÌǤ·¤«¤±¤Æ¤¤¤ë»Ò¥×¥í¥»¥¹¤ò²ó¼ý¤¹¤ë¤¿¤á¤Î¹¹¤Ê¤ëÎã¤Ë¤Ä¤¤¤Æ¤Ï perlpc ¤â»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

fork ¤·¤¿»Ò¥×¥í¥»¥¹¤¬ STDIN ¤ä STDOUT ¤È¤¤¤Ã¤¿¥·¥¹¥Æ¥à¥Õ¥¡¥¤¥ëµ­½Ò»Ò¤ò ·Ñ¾µ¤¹¤ë¾ì¹ç¡¢(CGI ¥¹¥¯¥ê¥×¥È¤ä¥ê¥â¡¼¥È¥·¥§¥ë¤È¤¤¤Ã¤¿ ¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¥¸¥ç¥Ö¤Î¤è¤¦¤Ê)¥ê¥â¡¼¥È¥µ¡¼¥Ð¤Ï¹Í¤¨Ä̤ê¤Ë ư¤«¤Ê¤¤¤Ç¤¢¤í¤¦¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤Î¤è¤¦¤Ê¾ì¹ç¤Ç¤Ï¤³¤ì¤é¤ò /dev/null ¤È¤·¤ÆºÆ¥ª¡¼¥×¥ó¤¹¤ë¤Ù¤­¤Ç¤¹¡£

format

write ´Ø¿ô¤Ç»È¤¦¥Ô¥¯¥Á¥ã¡¼¥Õ¥©¡¼¥Þ¥Ã¥È¤òÀë¸À¤·¤Þ¤¹¡£ Îã:

    format Something =
        Test: @<<<<<<<< @||||| @>>>>>
              $str,     $%,    '$' . int($num)
    .
    $str = "widget";
    $num = $cost/$quantity;
    $~ = 'Something';
    write;

¾ÜºÙ¤ÈÎã¤Ë¤Ä¤¤¤Æ¤Ï perlform ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

formline PICTURE,LIST

¤³¤ì¤Ï¡¢format ¤¬»ÈÍѤ¹¤ëÆâÉô´Ø¿ô¤Ç¤¹¤¬¡¢Ä¾ÀܸƤӽФ¹¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢PICTURE ¤ÎÆâÍÆ¤Ë¤·¤¿¤¬¤Ã¤Æ¡¢LIST ¤ÎÃͤòÀ°·Á¤· (perlform ¤ò »²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡¢·ë²Ì¤ò¥Õ¥©¡¼¥Þ¥Ã¥È½ÐÎÏ¥¢¥­¥å¥à¥ì¡¼¥¿$^A (English ¥â¥¸¥å¡¼¥ë¤Ç¤Ï $ACCUMULATOR) ¤ËǼ¤á¤Þ¤¹¡£ ºÇ½ªÅª¤Ë¡¢write ¤¬¼Â¹Ô¤µ¤ì¤ë¤È¡¢$^A ¤ÎÃæ¿È¤¬¡¢ ²¿¤é¤«¤Î¥Õ¥¡¥¤¥ë¥Ï¥ó¥É¥ë¤Ë½ñ¤­½Ð¤µ¤ì¤Þ¤¹¡£ ¤Þ¤¿¡¢¼«Ê¬¤Ç $^A ¤òÆÉ¤ó¤Ç¡¢$^A ¤ÎÆâÍÆ¤ò "" ¤ËÌᤷ¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡£ format ¤ÏÄ̾1 ¹Ô¤´¤È¤Ë formline ¤ò¹Ô¤Ê¤¤¤Þ¤¹¤¬¡¢ formline ´Ø¿ô¼«¿È¤Ï¡¢PICTURE ¤ÎÃæ¤Ë¤¤¤¯¤Ä¤Î²þ¹Ô¤¬Æþ¤Ã¤Æ¤¤¤ë¤«¤Ï¡¢ ´Ø·¸¤¬¤¢¤ê¤Þ¤»¤ó¡£ ¤³¤ì¤Ï¡¢~ ¤È ~~¥È¡¼¥¯¥ó¤Ï PICTURE Á´ÂΤò°ì¹Ô¤È¤·¤Æ°·¤¦¤³¤È¤ò°ÕÌ£¤·¤Þ¤¹¡£ ½¾¤Ã¤Æ¡¢1 ¥ì¥³¡¼¥É¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¼ÂÁõ¤¹¤ë¤¿¤á¤Ë¤Ï ¥Õ¥©¡¼¥Þ¥Ã¥È¥³¥ó¥Ñ¥¤¥é¤Î¤è¤¦¤ÊÊ£¿ô formline ¤ò»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£

¥À¥Ö¥ë¥¯¥©¡¼¥È¤Ç PICTURE ¤ò°Ï¤à¾ì¹ç¤Ë¤Ï¡¢@ ¤È¤¤¤¦Ê¸»ú¤¬ ÇÛÎó̾¤Î»Ï¤Þ¤ê¤È²ò¼á¤µ¤ì¤Þ¤¹¤Î¤Ç¡¢Ãí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ formline ¤Ï¾ï¤Ë¿¿¤òÊÖ¤·¤Þ¤¹¡£ ¤½¤Î¾¤ÎÎã¤Ë¤Ä¤¤¤Æ¤Ï perlform ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

getc FILEHANDLE
getc

FILEHANDLE ¤Ë¤Ä¤Ê¤¬¤ì¤Æ¤¤¤ëÆþÎÏ¥Õ¥¡¥¤¥ë¤«¤é¡¢¼¡¤Î°ìʸ»ú¤òÊÖ¤·¤Þ¤¹¡£ ¥Õ¥¡¥¤¥ë¤ÎºÇ¸å¡¢¤Þ¤¿¤Ï¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï¡¢Ì¤ÄêµÁÃͤòÊÖ¤·¤Þ¤¹ (¸å¼Ô¤Î¾ì¹ç¤Ï $! ¤¬¥»¥Ã¥È¤µ¤ì¤Þ¤¹)¡£ FILEHANDLE ¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢STDIN ¤«¤éÆÉ¤ß¹þ¤ß¤ò¹Ô¤Ê¤¤¤Þ¤¹¡£ ¤³¤ì¤ÏÆÃ¤Ë¸úΨŪ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ¤·¤«¤·¡¢¤³¤ì¤Ï¥æ¡¼¥¶¡¼¤¬¥ê¥¿¡¼¥ó¥­¡¼¤ò²¡¤¹¤Î¤òÂԤĤ³¤È¤Ê¤¯ °ìʸ»ú¤òÆÉ¤ß¹þ¤àÍÑÅӤˤϻȤ¨¤Þ¤»¤ó¡£ ¤½¤Î¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î¤ò»î¤·¤Æ¸«¤Æ¤¯¤À¤µ¤¤:

    if ($BSD_STYLE) {
        system "stty cbreak </dev/tty >/dev/tty 2>&1";
    }
    else {
        system "stty", '-icanon', 'eol', "\001";
    }
    $key = getc(STDIN);
    if ($BSD_STYLE) {
        system "stty -cbreak </dev/tty >/dev/tty 2>&1";
    }
    else {
        system "stty", 'icanon', 'eol', '^@'; # ASCII null
    }
    print "\n";

$BSD_STYLE ¤ò¥»¥Ã¥È¤¹¤ë¤Ù¤­¤«¤É¤¦¤«¤ò·èÄꤹ¤ëÊýË¡¤Ë¤Ä¤¤¤Æ¤Ï ÆÉ¼Ô¤Ø¤Î½ÉÂê¤È¤·¤Æ»Ä¤·¤Æ¤ª¤­¤Þ¤¹¡£

POSIX::getattr ´Ø¿ô¤Ï POSIX ½àµò¤ò¼çÄ¥¤¹¤ë¥·¥¹¥Æ¥à¤Ç¤³¤ì¤ò ¤è¤ê°Ü¿¢À­¤Î¤¢¤ë·Á¤Ç¹Ô¤¤¤Þ¤¹¡£ ¤ª¶á¤¯¤Î CPAN ¥µ¥¤¥È¤«¤é Term::ReadKey ¥â¥¸¥å¡¼¥ë¤â»²¾È¤·¤Æ²¼¤µ¤¤; CPAN ¤Ë´Ø¤¹¤ë¾ÜºÙ¤Ï CPAN in perlmodlib ¤Ë¤¢¤ê¤Þ¤¹¡£

getlogin

¤³¤ì¤ÏƱ¤¸Ì¾Á°¤Î C ¥é¥¤¥Ö¥é¥ê´Ø¿ô¤ò¼ÂÁõ¤·¤Æ¤¤¤Æ¡¢ ¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¤â¤·¤¢¤ì¤Ð¡¢/etc/utmp ¤«¤é¸½ºß¤Î¥í¥°¥¤¥ó̾¤òÊÖ¤·¤Þ¤¹¡£ ¥Ì¥ë¤Ç¤¢¤ì¤Ð¡¢getpwuid() ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

    $login = getlogin || getpwuid($<) || "Kilroy";

getlogin ¤òǧ¾Ú¤Ë»È¤Ã¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ ¤³¤ì¤Ï getpwuid ¤Î¤è¤¦¤Ë°ÂÁ´¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£

getpeername SOCKET

SOCKET ¥³¥Í¥¯¥·¥ç¥ó¤Î¸þ¤³¤¦Â¦¤Î¥Ñ¥Ã¥¯¤µ¤ì¤¿ aockaddr ¥¢¥É¥ì¥¹¤òÊÖ¤·¤Þ¤¹¡£

    use Socket;
    $hersockaddr    = getpeername(SOCK);
    ($port, $iaddr) = sockaddr_in($hersockaddr);
    $herhostname    = gethostbyaddr($iaddr, AF_INET);
    $herstraddr     = inet_ntoa($iaddr);
getpgrp PID

»ØÄꤵ¤ì¤¿ PID ¤Î¸½ºß¤Î¥×¥í¥»¥¹¥°¥ë¡¼¥×¤òÊÖ¤·¤Þ¤¹¡£ PID ¤Ë 0 ¤òÍ¿¤¨¤ë¤È¥«¥ì¥ó¥È¥×¥í¥»¥¹¤Î»ØÄê¤È¤Ê¤ê¤Þ¤¹¡£ getpgrp(2) ¤ò¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤¥Þ¥·¥ó¤Ç¼Â¹Ô¤·¤¿¾ì¹ç¤Ë¤Ï¡¢Îã³°¤¬È¯À¸¤·¤Þ¤¹¡£ PID ¤ò¾Êά¤¹¤ë¤È¥«¥ì¥ó¥È¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹¥°¥ë¡¼¥×¤òÊÖ¤·¤Þ¤¹¡£ POSIX ÈǤΠgetpgrp ¤Ï PID °ú¿ô¤ò¼õ¤±ÉÕ¤±¤Ê¤¤¤Î¤Ç¡¢ PID==0 ¤Î¤ß¤¬´°Á´¤Ë°Ü¿¢À­¤¬¤¢¤ê¤Þ¤¹¡£

getppid

¿Æ¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ id ¤òÊÖ¤·¤Þ¤¹¡£

Linux ¥æ¡¼¥¶¡¼¤Ø¤ÎÃí°Õ: Linux ¤Ç¤Ï getpid() ¤È getppid() ¤Î C ´Ø¿ô¤Ï ¥¹¥ì¥Ã¥É¤¬°Û¤Ê¤ë¤È°Û¤Ê¤Ã¤¿ÃͤòÊÖ¤·¤Þ¤¹¡£ °Ü¿¢À­¤Î¤¿¤á¤Ë¡¢¤³¤Î¿¶¤ëÉñ¤¤¤Ï perl ¥ì¥Ù¥ë¤Î´Ø¿ô getppid() ¤Ë¤Ï È¿±Ç¤µ¤ì¤º¡¢¥¹¥ì¥Ã¥É¤ò¤Þ¤¿¤¤¤Ç°ì´ÓÀ­¤Î¤¢¤ëÃͤòÊÖ¤·¤Þ¤¹¡£ ´ðÁäȤʤë getppid() ¤ò¸Æ¤Ó½Ð¤·¤¿¤¤¾ì¹ç¤Ï¡¢CPAN ¥â¥¸¥å¡¼¥ë¤Ç¤¢¤ë Linux::Pid ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£

getpriority WHICH,WHO

¥×¥í¥»¥¹¡¢¥×¥í¥»¥¹¥°¥ë¡¼¥×¡¢¥æ¡¼¥¶¤ËÂФ¹¤ë¸½ºß¤ÎÍ¥ÀèÅÙ¤òÊÖ¤·¤Þ¤¹¡£ (getpriority(2) ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£) getpriority(2) ¤ò¼ÂÁõ¤·¤Æ¤¤¤Ê¤¤ ¥Þ¥·¥ó¤Ç¼Â¹Ô¤·¤¿¾ì¹ç¤Ë¤Ï¡¢Ã×̿ŪÎã³°¤¬È¯À¸¤·¤Þ¤¹¡£

getpwnam NAME
getgrnam NAME
gethostbyname NAME
getnetbyname NAME
getprotobyname NAME
getpwuid UID
getgrgid GID
getservbyname NAME,PROTO
gethostbyaddr ADDR,ADDRTYPE
getnetbyaddr ADDR,ADDRTYPE
getprotobynumber NUMBER
getservbyport PORT,PROTO
getpwent
getgrent
gethostent
getnetent
getprotoent
getservent
setpwent
setgrent
sethostent STAYOPEN
setnetent STAYOPEN
setprotoent STAYOPEN
setservent STAYOPEN
endpwent
endgrent
endhostent
endnetent
endprotoent
endservent

¤³¤ì¤é¤Î¥ë¡¼¥Á¥ó¤Ï¡¢¥·¥¹¥Æ¥à¥é¥¤¥Ö¥é¥ê¤ÎƱ̾¤Î´Ø¿ô¤ò¼Â¹Ô¤·¤Þ¤¹¡£ ¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢¤µ¤Þ¤¶¤Þ¤Ê get ¥ë¡¼¥Á¥ó¤«¤é¤ÎÊÖ¤êÃͤϡ¢¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹:

    ($name,$passwd,$uid,$gid,
       $quota,$comment,$gcos,$dir,$shell,$expire) = getpw*
    ($name,$passwd,$gid,$members) = getgr*
    ($name,$aliases,$addrtype,$length,@addrs) = gethost*
    ($name,$aliases,$addrtype,$net) = getnet*
    ($name,$aliases,$proto) = getproto*
    ($name,$aliases,$port,$proto) = getserv*

(¥¨¥ó¥È¥ê¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¢¶õ¥ê¥¹¥È¤¬ÊÖ¤µ¤ì¤Þ¤¹¡£)

$gcos ¥Õ¥£¡¼¥ë¥É¤ÎÀµ³Î¤Ê°ÕÌ£¤Ï¤µ¤Þ¤¶¤Þ¤Ç¤¹¤¬¡¢Ä̾ï¤Ï(¥í¥°¥¤¥ó̾¤Ç¤Ï¤Ê¤¯) ¥æ¡¼¥¶¡¼¤Î¼ÂºÝ¤Î̾Á°¤È¥æ¡¼¥¶¡¼¤ËÉտ魯¤ë¾ðÊó¤ò´Þ¤ß¤Þ¤¹¡£ ⤷¡¢Â¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¥æ¡¼¥¶¡¼¤¬¤³¤Î¾ðÊó¤òÊѹ¹¤Ç¤­¤ë¤Î¤Ç¡¢¤³¤Î¾ðÊó¤Ï ¿®Íê¤Ç¤­¤º¡¢½¾¤Ã¤Æ $gcos ¤Ï±øÀ÷¤µ¤ì¤Þ¤¹(perlsec ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤)¡£ ¥æ¡¼¥¶¡¼¤Î°Å¹æ²½¤µ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É¤È¥í¥°¥¤¥ó¥·¥§¥ë¤Ç¤¢¤ë $passwd ¤È $shell ¤â¡¢Æ±ÍͤÎÍýͳ¤Ç±øÀ÷¤µ¤ì¤Þ¤¹¡£

¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢*nam¡¢*byname ¤È¤¤¤Ã¤¿ NAME ¤Ç¸¡º÷¤¹¤ë¤â¤Î°Ê³°¤Ï¡¢ name ¤òÊÖ¤·¡¢NAME ¤Ç¸¡º÷¤¹¤ë¤â¤Î¤Ï¡¢²¿¤«Ê̤Τâ¤Î¤òÊÖ¤·¤Þ¤¹¡£ (¥¨¥ó¥È¥ê¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¡¢Ì¤ÄêµÁÃͤ¬ÊÖ¤ê¤Þ¤¹¡£) Îã:

    $uid   = getpwnam($name);
    $name  = getpwuid($num);
    $name  = getpwent();
    $gid   = getgrnam($name);
    $name  = getgrgid($num);
    $name  = getgrent();
    #etc.

getpw*() ¤Ç¤Ï¡¢$quota, $comment, $expire ¥Õ¥£¡¼¥ë¥É¤Ï¡¢ ¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤ÏÂбþ¤·¤Æ¤¤¤Ê¤¤¤Î¤ÇÆÃÊ̤ʽèÍý¤¬¤µ¤ì¤Þ¤¹¡£ $quota ¤¬ÈóÂбþ¤Î¾ì¹ç¡¢¶õ¤Î¥¹¥«¥é¤Ë¤Ê¤ê¤Þ¤¹¡£ Âбþ¤·¤Æ¤¤¤ë¾ì¹ç¡¢Ä̾ï¤Ï¥Ç¥£¥¹¥¯¥¯¥©¡¼¥¿¤ÎÃͤ¬Æþ¤ê¤Þ¤¹¡£ $comment ¥Õ¥£¡¼¥ë¥É¤¬ÈóÂбþ¤Î¾ì¹ç¡¢¶õ¤Î¥¹¥«¥é¤Ë¤Ê¤ê¤Þ¤¹¡£ Âбþ¤·¤Æ¤¤¤ë¾ì¹ç¡¢Ä̾ï¤Ï¥æ¡¼¥¶¡¼¤Ë´Ø¤¹¤ë´ÉÍý¾å¤Î¥³¥á¥ó¥È¤¬Æþ¤ê¤Þ¤¹¡£ $quota ¥Õ¥£¡¼¥ë¥É¤Ï¥Ñ¥¹¥ï¡¼¥É¤Î¼÷Ì¿¤ò¼¨¤¹ $change ¤ä $age ¤Ç¤¢¤ë ¥·¥¹¥Æ¥à¤â¤¢¤ê¤Þ¤¹¡£ $comment ¥Õ¥£¡¼¥ë¥É¤Ï $class ¤Ç¤¢¤ë¥·¥¹¥Æ¥à¤â¤¢¤ê¤Þ¤¹¡£ $expire ¥Õ¥£¡¼¥ë¥É¤¬¤¢¤ë¾ì¹ç¤Ï¡¢¥¢¥«¥¦¥ó¥È¤ä¥Ñ¥¹¥ï¡¼¥É¤¬»þ´ÖÀÚ¤ì¤Ë¤Ê¤ë ´ü´Ö¤¬Æþ¤ê¤Þ¤¹¡£ ưºî¤µ¤»¤ë¥·¥¹¥Æ¥à¤Ç¤Î¤³¤ì¤é¤Î¥Õ¥£¡¼¥ë¥É¤ÎÍ­¸úÀ­¤ÈÀµ³Î¤Ê°ÕÌ£¤Ë¤Ä¤¤¤Æ¤Ï¡¢ getpwnam(3) ¤Î¥É¥­¥å¥á¥ó¥È¤È pwd.h ¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£ $quota ¤È $comment ¥Õ¥£¡¼¥ë¥É¤¬²¿¤ò°ÕÌ£¤·¤Æ¤¤¤ë¤«¤È¡¢$expire ¥Õ¥£¡¼¥ë¥É¤¬ ¤¢¤ë¤«¤É¤¦¤«¤Ï¡¢Config ¥â¥¸¥å¡¼¥ë¤ò»È¤Ã¤Æ¡¢d_pwquota, d_pwage, d_pwchange, d_pwcomment, d_pwexpire ¤ÎÃͤòÄ´¤Ù¤ë¤³¤È¤Ë¤è¤Ã¤Æ Perl ¼«¿È¤ÇÄ´¤Ù¤ë¤³¤È¤â½ÐÍè¤Þ¤¹¡£ ¥·¥ã¥É¥¦¥Ñ¥¹¥ï¡¼¥É¤Ï¡¢Ä̾ï¤Î C ¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤ò¸¢¸Â¤¬¤¢¤ë¾õÂÖ¤Ç ¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¥·¥ã¥É¥¦ÈǤ¬¼èÆÀ¤Ç¤­¤ë¤«¡¢System V ¤Ë¤¢¤ë¤è¤¦¤Ê (Solaris ¤È Linux ¤ò´Þ¤ß¤Þ¤¹) shadow(3) ´Ø¿ô¤¬¤¢¤ë¤È¤¤¤Ã¤¿¡¢ ľ´¶Åª¤ÊÊýË¡¤Ç¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Î¤ßÂбþ¤µ¤ì¤Þ¤¹¡£ ÆÈÀêŪ¤Ê¥·¥ã¥É¥¦¥Ñ¥¹¥ï¡¼¥Éµ¡Ç½¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ ¤½¤ì¤ËÂбþ¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¤Ç¤·¤ç¤¦¡£

getgr*() ¤Ë¤è¤Ã¤ÆÊÖ¤ëÃÍ $members ¤Ï¡¢¥°¥ë¡¼¥×¤Î¥á¥ó¥Ð¤Î ¥í¥°¥¤¥ó̾¤ò¥¹¥Ú¡¼¥¹¤Ç¶èÀڤ俤â¤Î¤Ç¤¹¡£

gethost*() ´Ø¿ô¤Ç¤Ï¡¢C ¤Ç h_errno ÊÑ¿ô¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢ ´Ø¿ô¸Æ½Ð¤¬¼ºÇÔ¤·¤¿¤È¤­¤Ë¡¢$? ¤òÄ̤·¤Æ¡¢¤½¤ÎÃͤ¬ÊÖ¤µ¤ì¤Þ¤¹¡£ À®¸ù»þ¤ËÊÖ¤µ¤ì¤ë @addrs Ãͤϡ¢Âбþ¤¹¤ë¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬ÊÖ¤¹¡¢ À¸¤Î¥¢¥É¥ì¥¹¤Î¥ê¥¹¥È¤Ç¤¹¡£ ¥¤¥ó¥¿¡¼¥Í¥Ã¥È¥É¥á¥¤¥ó¤Ç¤Ï¡¢¸Ä¡¹¤Î¥¢¥É¥ì¥¹¤Ï¡¢4 ¥Ð¥¤¥ÈĹ¤Ç¡¢ °Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ unpack ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

    ($a,$b,$c,$d) = unpack('W4',$addr[0]);

Socket ¥é¥¤¥Ö¥é¥ê¤ò»È¤¦¤È¤â¤¦¾¯¤·´Êñ¤Ë¤Ê¤ê¤Þ¤¹¡£

    use Socket;
    $iaddr = inet_aton("127.1"); # or whatever address
    $name  = gethostbyaddr($iaddr, AF_INET);
    # or going the other way
    $straddr = inet_ntoa($iaddr);

µÕÊý¸þ¤Ë¡¢¥Û¥¹¥È̾¤«¤é IP ¥¢¥É¥ì¥¹¤ò²ò·è¤¹¤ë¤Ë¤Ï°Ê²¼¤Î¤è¤¦¤Ë½ñ¤±¤Þ¤¹:

    use Socket;
    $packed_ip = gethostbyname("www.perl.org");
    if (defined $packed_ip) {
        $ip_address = inet_ntoa($packed_ip);
    }

gethostbyname() ¤Ï¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¸Æ¤Ó½Ð¤¹¤è¤¦¤Ë¤·¤Æ¡¢ÊÖ¤êÃͤ¬ ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤òɬ¤º¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£

ÊÖ¤êÃͤΥꥹ¥È¤Î²¿ÈÖÌܤ¬¤É¤ÎÍ×ÁǤ«¤ò³Ð¤¨¤ë¤Î¤ËÈè¤ì¤¿¤Ê¤é¡¢ ̾Á°¥Ù¡¼¥¹¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬É¸½à¥â¥¸¥å¡¼¥ë¤ÇÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹: File::stat, Net::hostent, Net::netent, Net::protoent, Net::servent, Time::gmtime, Time::localtime, User::grent ¤Ç¤¹¡£ ¤³¤ì¤é¤ÏÄ̾ï¤ÎÁȤ߹þ¤ß¤ò¾å½ñ¤­¤·¡¢ ¤½¤ì¤¾¤ì¤Î¥Õ¥£¡¼¥ë¥É¤ËŬÀÚ¤Ê̾Á°¤ò¤Ä¤±¤¿¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤·¤Þ¤¹¡£ Îã:

   use File::stat;
   use User::pwent;
   $is_his = (stat($filename)->uid == pwent($whoever)->uid);

Ʊ¤¸¥á¥½¥Ã¥É(uid)¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤Þ¤¹¤¬¡¢°ã¤¤¤Þ¤¹¡£ ¤Ê¤¼¤Ê¤é File::stat ¥ª¥Ö¥¸¥§¥¯¥È¤Ï User::pwent ¥ª¥Ö¥¸¥§¥¯¥È¤È¤Ï °Û¤Ê¤ë¤«¤é¤Ç¤¹¡£

getsockname SOCKET

SOCKET Àܳ¤Î¤³¤Á¤é¦¤Î pack ¤µ¤ì¤¿ sockaddr ¥¢¥É¥ì¥¹¤òÊÖ¤·¤Þ¤¹¡£ Ê£¿ô¤Î°Û¤Ê¤ë IP ¤«¤éÀܳ¤µ¤ì¤ë¤¿¤á¤Ë¥¢¥É¥ì¥¹¤¬¤ï¤«¤é¤Ê¤¤¾ì¹ç¤Ë»È¤¤¤Þ¤¹¡£

    use Socket;
    $mysockaddr = getsockname(SOCK);
    ($port, $myaddr) = sockaddr_in($mysockaddr);
    printf "Connect to %s [%s]\n",
       scalar gethostbyaddr($myaddr, AF_INET),
       inet_ntoa($myaddr);
getsockopt SOCKET,LEVEL,OPTNAME

Í¿¤¨¤é¤ì¤¿ LEVEL ¤Ç SOCKET ¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿ OPTNAME ¤È¸À¤¦Ì¾Á°¤Î¥ª¥×¥·¥ç¥ó¤ò Ì䤤¹ç¤ï¤»¤Þ¤¹¡£ ¥ª¥×¥·¥ç¥ó¤Ï¥½¥±¥Ã¥È¤Î¼ïÎà¤Ë°Í¸¤·¤·¤¿Ê£¿ô¤Î¥×¥í¥È¥³¥ë¥ì¥Ù¥ë¤Ë¸ºß¤¹¤ë¤³¤È¤â ¤¢¤ê¤Þ¤¹¤¬¡¢¾¯¤Ê¤¯¤È¤âºÇ¾å°Ì¥½¥±¥Ã¥È¥ì¥Ù¥ë SOL_SOCKET (Socket ¥â¥¸¥å¡¼¥ë¤Ç ÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹)¤Ï¸ºß¤·¤Þ¤¹¡£ ¤½¤Î¾¤Î¥ì¥Ù¥ë¤Î¥ª¥×¥·¥ç¥ó¤òÌ䤤¹ç¤ï¤»¤ë¤Ë¤Ï¡¢¤½¤Î¥ª¥×¥·¥ç¥ó¤òÀ©¸æ¤¹¤ë ŬÀڤʥץí¥È¥³¥ë¤Î¥×¥í¥È¥³¥ëÈÖ¹æ¤ò»ØÄꤷ¤Þ¤¹¡£ Î㤨¤Ð¡¢¥ª¥×¥·¥ç¥ó¤¬ TCP ¥×¥í¥È¥³¥ë¤Ç²ò¼á¤µ¤ì¤ë¤Ù¤­¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹¤¿¤á¤Ë¤Ï¡¢ LEVEL ¤Ï getprotobyname ¤ÇÆÀ¤é¤ì¤ë TCP ¤Î¥×¥í¥È¥³¥ëÈÖ¹æ¤òÀßÄꤷ¤Þ¤¹¡£

¤³¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢Í׵ᤵ¤ì¤¿¥½¥±¥Ã¥È¥ª¥×¥·¥ç¥ó¤Î pack ¤µ¤ì¤¿Ê¸»úÎóɽ¸½¤«¡¢ ¤¢¤ë¤¤¤Ï¥¨¥é¡¼¤¬¤¢¤ë¾ì¹ç¤Ï undef ¤òÊÖ¤·¤Þ¤¹(¥¨¥é¡¼¤ÎÍýͳ¤Ï $! ¤Ë¤¢¤ê¤Þ¤¹)¡£ pack ¤µ¤ì¤¿Ê¸»úÎó¤ÎÀµ³Î¤ÊÃæ¿È¤Ï LEVEL ¤È OPTNAME ¤Ë°Í¸¤¹¤ë¤Î¤Ç¡¢ ¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï¥·¥¹¥Æ¥à¥É¥­¥å¥á¥ó¥È¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤·¤«¤·¡¢¤È¤Æ¤â°ìÈÌŪ¤Ê¾ì¹ç¤È¤¤¤¦¤Î¤Ï¥ª¥×¥·¥ç¥ó¤¬À°¿ô¤Î¾ì¹ç¤Ç¡¢¤³¤Î¾ì¹ç ·ë²Ì¤Ï unpack ¤Î i (¤¢¤ë¤¤¤Ï I)¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¥Ç¥³¡¼¥É¤Ç¤­¤ë pack ¤µ¤ì¤¿ À°¿ô¤Ç¤¹¡£

¤¢¤ë¥½¥±¥Ã¥È¤Ç Nagle ¤Î¥¢¥ë¥´¥ê¥º¥àÍ­¸ú¤«¤É¤¦¤«¤òÄ´¤Ù¤ëÎã¤Ç¤¹:

    use Socket qw(:all);
    defined(my $tcp = getprotobyname("tcp"))
        or die "Could not determine the protocol number for tcp";
    # my $tcp = IPPROTO_TCP; # Alternative
    my $packed = getsockopt($socket, $tcp, TCP_NODELAY)
        or die "Could not query TCP_NODELAY socket option: $!";
    my $nodelay = unpack("I", $packed);
    print "Nagle's algorithm is turned ", $nodelay ? "off\n" : "on\n";
glob EXPR
glob

¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢ EXPR ¤ÎÃͤò¡¢É¸½à Unix ¥·¥§¥ë /bin/csh ¤¬¹Ô¤Ê¤¦¤è¤¦¤Ë ¥Õ¥¡¥¤¥ë̾¤ÎŸ³«¤ò¹Ô¤Ê¤Ã¤¿·ë²Ì¤Î¥ê¥¹¥È(¶õ¤«¤â¤·¤ì¤Þ¤»¤ó)¤òÊÖ¤·¤Þ¤¹¡£ ¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢glob ¤Ï¤³¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë̾Ÿ³«¤ò·«¤êÊÖ¤·¡¢ ¥ê¥¹¥È¤¬¤Ê¤¯¤Ê¤Ã¤¿¤é undef ¤òÊÖ¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢<*.c> ±é»»»Ò¤ò¼ÂÁõ¤¹¤ëÆâÉô´Ø¿ô¤Ç¤¹¤¬¡¢ ľÀÜ»ÈÍѤ¹¤ë¤³¤È¤â¤Ç¤­¤Þ¤¹¡£ EXPR ¤ò¾Êά¤¹¤ë¤È¡¢$_¤¬»È¤ï¤ì¤Þ¤¹¡£ <*.c>±é»»»Ò¤Ë¤Ä¤¤¤Æ¤Ï I/O Operators in perlop ¤Ç¤è¤ê¾ÜºÙ¤ËµÄÏÀ¤·¤Æ¤¤¤Þ¤¹¡£

v5.6.0 ¤«¤é¡¢¤³¤Î±é»»»Ò¤Ïɸ½à¤Î File::Glob ³ÈÄ¥¤ò»È¤Ã¤Æ ¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ¾ÜºÙ¤Ï File::Glob ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£

gmtime EXPR
gmtime

localtime ¤ÈƱÍÍ¤ËÆ¯¤­¤Þ¤¹¤¬¡¢ÊÖ¤êÃͤϥ°¥ê¥Ë¥Ã¥¸É¸½à»þ¤Ë ¥í¡¼¥«¥é¥¤¥º¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

Ãí°Õ: ¥ê¥¹¥È¥³¥ó¥Æ¥­¥¹¥È¤Ç¸Æ¤Ó½Ð¤·¤¿»þ¡¢gmtime ¤¬ÊÖ¤¹ËöÈø¤ÎÃͤǤ¢¤ë $isdst ¤Ï¾ï¤Ë 0 ¤Ç¤¹¡£ GMT ¤Ë¤Ï²Æ»þ´Ö¤Ï¤¢¤ê¤Þ¤»¤ó¡£

°Ü¿¢À­¤ÎÌäÂê¤Ë¤Ä¤¤¤Æ¤Ï perlport/gmtime ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

goto LABEL
goto EXPR
goto &NAME

goto-LABEL ¤Î·Á¼°¤Ï¡¢LABEL ¤È¤¤¤¦¥é¥Ù¥ë¤ÎÉÕ¤¤¤¿Ê¸¤ò õ¤·¤Æ¡¢¤½¤³¤Ø¼Â¹Ô¤ò°Ü¤¹¤â¤Î¤Ç¤¹¡£¡¡¥µ¥Ö¥ë¡¼¥Á¥ó¤ä foreach ¥ë¡¼¥×¤Ê¤É¡¢²¿¤é¤«¤Î½é´ü²½¤¬É¬Íפʹ½Â¤¤ÎÃæ¤Ë Æþ¤ê¹þ¤à¤³¤È¤Ïµö¤µ¤ì¤Þ¤»¤ó¡£¡¡ºÇŬ²½¤Ë¤è¤Ã¤Æ¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¹½Â¤¤ÎÃæ¤Ë¤â goto ¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£ ¤Þ¤¿¡¢sort¤ÇÍ¿¤¨¤é¤ì¤¿¥Ö¥í¥Ã¥¯¤ä¥µ¥Ö¥ë¡¼¥Á¥ó¤«¤é³°¤Ø½Ð¤ë¤³¤È¤â¤Ç¤­¤Þ¤»¤ó¡£ ¤³¤ì°Ê³°¤Ï¡¢¥µ¥Ö¥ë¡¼¥Á¥ó¤Î³°¤ò´Þ¤à¡¢Æ°Åª¥¹¥³¡¼¥×Æâ¤Î ¤Û¤È¤ó¤É¤¹¤Ù¤Æ¤Î¾ì½ê¤Ø¹Ô¤¯¤¿¤á¤Ë»ÈÍѤǤ­¤Þ¤¹¤¬¡¢ÉáÄ̤ϡ¢ last ¤ä die ¤È¤¤¤Ã¤¿Ê̤ι½Â¤¤ò»È¤Ã¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡£ Perl ¤Îºî¼Ô¤Ï¤³¤Î·Á¼°¤Î goto ¤ò»È¤¦É¬Íפò´¶¤¸¤¿¤³¤È¤Ï¡¢ 1 Å٤⤢¤ê¤Þ¤»¤ó (Perl ¤Ç¤Ï¡£C ¤ÏÊ̤ΤªÏäǤ¹)¡£ (°ã¤¤¤Ï¡¢C ¤Ë¤Ï¥ë¡¼¥×À©¸æ¤È·ë¤Ó¤Ä¤¤¤¿Ì¾Á°¤Ä¤­¤Î¥ë¡¼¥×¤¬¤Ê¤¤¤³¤È¤Ç¤¹¡£ Perl ¤Ë¤Ï¤¢¤ê¡¢¤³¤ì¤¬Â¾¤Î¸À¸ì¤Ç¤Î¤Û¤È¤ó¤É¤Î¹½Â¤Åª¤Ê goto ¤Î»ÈÍÑË¡¤ò ÃÖ¤­´¹¤¨¤Þ¤¹¡£)

goto-EXPR ¤Î·Á¼°¤Ï¥é¥Ù¥ë̾¤òͽ¬¤·¡¢¤³¤Î¥¹¥³¡¼¥×¤ÏưŪ¤Ë²ò·è¤µ¤ì¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤ê FORTRAN ¤Î¤è¤¦¤Ê»»½Ñ goto ¤¬²Äǽ¤Ë¤Ê¤ê¤Þ¤¹¤¬¡¢ ÊݼéÀ­¤ò½Å»ë¤¹¤ë¤Ê¤é¤ª´«¤á¤·¤Þ¤»¤ó¡£

    goto ("FOO", "BAR", "GLARCH")[$i];

goto-&NAME ¤Î·Á¼°¤Ï¡¢¤½¤Î¾¤Î goto ¤Î·Á¼°¤È¤Ï¤«¤Ê¤ê °Û¤Ê¤Ã¤¿¤â¤Î¤Ç¤¹¡£ ¼ÂºÝ¡¢¤³¤ì¤ÏÉáÄ̤δ¶³Ð¤Ç¤¤¤¦¤È¤³¤í¤Î¤É¤³¤«¤Ø¹Ô¤¯¤â¤Î¤Ç¤ÏÁ´¤¯¤Ê¤¯¡¢ ¾¤Î goto ¤¬»ý¤ÄÉÔ̾ÍÀ¤ò»ý¤Ã¤Æ¤¤¤Þ¤»¤ó¡£ ¸½ºß¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ò½ªÎ»¤· (local() ¤Ë¤è¤ëÊѹ¹¤Ï¼º¤ï¤ì¤Þ¤¹)¡¢ ľ¤Á¤Ë¸½ºß¤Î @_ ¤ÎÃͤò»È¤Ã¤Æ»ØÄꤵ¤ì¤¿Ì¾Á°¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢AUTOLOAD ¥µ¥Ö¥ë¡¼¥Á¥ó¤¬Ê̤Υµ¥Ö¥ë¡¼¥Á¥ó¤ò¥í¡¼¥É¤·¤Æ¡¢ ¤½¤ÎÊ̤Υµ¥Ö¥ë¡¼¥Á¥ó¤¬ºÇ½é¤Ë¸Æ¤Ð¤ì¤¿¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤Þ¤¹ (¤¿¤À¤·¡¢¸½ºß¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤Ç @_ ¤ò½¤Àµ¤·¤¿¾ì¹ç¤Ë¤Ï¡¢ ¤½¤ÎÊ̤Υµ¥Ö¥ë¡¼¥Á¥ó¤ËÅÁ¤¨¤é¤ì¤Þ¤¹)¡£ goto ¤Î¤¢¤È¤Ï¡¢caller ¤Ç¤µ¤¨¤â¡¢¸½ºß¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤¬ ºÇ½é¤Ë¸Æ¤Ó½Ð¤µ¤ì¤¿¤È¸À¤¦¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£

NAME ¤Ï¥µ¥Ö¥ë¡¼¥Á¥ó¤Î̾Á°¤Ç¤¢¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó; ¥³¡¼¥É¥ê¥Õ¥¡¥ì¥ó¥¹¤ò ´Þ¤à¥¹¥«¥éÃͤ䡢¥³¡¼¥É¥ê¥Õ¥¡¥ì¥ó¥¹¤Èɾ²Á¤µ¤ì¤ë¥Ö¥í¥Ã¥¯¤Ç¤â¹½¤¤¤Þ¤»¤ó¡£

grep BLOCK LIST
grep EXPR,LIST

¤³¤ì¤Ï grep(1) ¤È¤½¤Î¿ÆÎà¤ÈƱ¤¸¤è¤¦¤Ê¤â¤Î¤Ç¤¹¤¬¡¢Æ±¤¸¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ ÆÃ¤Ë¡¢Àµµ¬É½¸½¤Î»ÈÍѤËÀ©¸Â¤µ¤ì¤Þ¤»¤ó¡£

LIST ¤Î¸Ä¡¹¤ÎÍ×ÁǤËÂФ·¤Æ¡¢BLOCK ¤« EXPR ¤òɾ²Á¤· ($_ ¤Ï¡¢¥í¡¼¥«¥ë¤Ë¸Ä¡¹¤ÎÍ×ÁǤ¬ÀßÄꤵ¤ì¤Þ¤¹) ¡¢ ¤½¤ÎÍ×ÁǤΤ¦¤Á¡¢É¾²Á¤·¤¿¼°¤¬¿¿¤È¤Ê¤Ã¤¿¤â¤Î¤«¤é¤Ê¤ë¥ê¥¹¥ÈÃͤ¬ÊÖ¤µ¤ì¤Þ¤¹¡£ ¥¹¥«¥é¥³¥ó¥Æ¥­¥¹¥È¤Ç¤Ï¡¢¼°¤¬¿¿¤È¤Ê¤Ã¤¿²ó¿ô¤òÊÖ¤·¤Þ¤¹¡£¡¡Îã:

    @foo = grep(!/^#/, @bar);    # weed out comments

¤¢¤ë¤¤¤ÏÅù²Á¤ÊÎã¤È¤·¤Æ:

    @foo = grep {!/^#/} @bar;    # weed out comments

$_ ¤Ï¡¢LIST ¤ÎÃͤؤΥ¨¥¤¥ê¥¢¥¹¤Ç¤¹¤Î¤Ç¡¢LIST ¤ÎÍ×ÁǤò Êѹ¹¤¹¤ë¤¿¤á¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢ÊØÍø¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ LIST ¤ÎÍ×ÁǤ¬ÊÑ¿ô¤Ç¤Ê¤¤¤È¡¢¤ª¤«¤·¤Ê·ë²Ì¤Ë¤Ê¤ê¤Þ¤¹¡£ ƱÍͤˡ¢grep ¤Ï¸µ¤Î¥ê¥¹¥È¤Ø¤Î¥¨¥¤¥ê¥¢¥¹¤òÊÖ¤·¤Þ¤¹¡£ for ¥ë¡¼¥×¤Î¥¤¥ó¥Ç¥Ã¥¯¥¹ÊÑ¿ô¤¬¥ê¥¹¥ÈÍ×ÁǤΥ¨¥¤¥ê¥¢¥¹¤Ç¤¢¤ë¤Î¤È ƱÍͤǤ¹¡£ ¤Ä¤Þ¤ê¡¢grep ¤ÇÊÖ¤µ¤ì¤¿¥ê¥¹¥È¤ÎÍ×ÁǤò (foreach, map, ¤Þ¤¿¤Ï¾¤Î grep ¤Ç)½¤Àµ¤¹¤ë¤È ¸µ¤Î¥ê¥¹¥È¤ÎÍ×ÁǤ¬Êѹ¹¤µ¤ì¤Þ¤¹¡£ ¤³¤ì¤Ï¤­¤ì¤¤¤Ê¥³¡¼¥É¤ò½ñ¤³¤¦¤È¤¹¤ë¼ÙËâ¤Ë¤Ê¤ë¤³¤È¤¬Â¿¤¤¤Ç¤¹¡£

(my $_ ¤È¤·¤ÆÀë¸À¤µ¤ì¤ë¤³¤È¤Ë¤è¤Ã¤Æ) $_ ¤¬ grep ¤¬¸½¤ì¤ë¥¹¥³¡¼¥×Æâ¤Ç ¥ì¥­¥·¥«¥ë¤Ê¾ì¹ç¤Ï¡¢¥í¡¼¥«¥ë¤Ç¤Ï¥ê¥¹¥ÈÍ×ÁǤؤΥ¨¥¤¥ê¥¢¥¹¤Ç¤¢¤ë¤³¤È¤Ë²Ã¤¨¤Æ¡¢ $_ ¤Ï¥Ö¥í¥Ã¥¯Æâ¤Ç¥ì¥­¥·¥«¥ë¤Ç¤¢¤ê¤Ä¤Å¤±¤Þ¤¹; ¤Ä¤Þ¤ê¡¢³°Â¦¤«¤é¤Ï¸«¤¨¤º¡¢ µ¯¤³¤ê¤¦¤ëÉûºîÍѤò²óÈò¤·¤Þ¤¹¡£

BLOCK ¤ä EXPR ¤Î·ë²Ì¤ò¥ê¥¹¥È¤Î·Á¤Ë¤·¤¿¤¤¾ì¹ç¤Ï map ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£

hex EXPR
hex

EXPR ¤ò 16 ¿Ê¿ô¤Îʸ»úÎó¤È²ò¼á¤·¤Æ¡¢Âбþ¤¹¤ëÃͤòÊÖ¤·¤Þ¤¹¡£ (0, 0x, 0b ¤Ç»Ï¤Þ¤ëʸ»úÎó¤ÎÊÑ´¹¤Ë¤Ï¡¢oct ¤ò »²¾È¤·¤Æ¤