.rn '' }`
.\" jpman %Id: perl.1,v 1.5 1997/10/11 07:57:22 horikawa Stab %
''' %RCSfile: perl.1,v %%Revision: 1.5 %%Date: 1998/06/04 21:05:33 %
''' 
''' %Log: perl.1,v %
''' Revision 1.5  1998/06/04 21:05:33  steve
''' Fix a bunch of spelling errors.
'''
''' PR:		6856
''' Submitted by:	Josh Gilliam <josh@quick.net>
'''
''' Revision 1.4  1997/08/30 12:22:46  jmg
''' fix a few spelling changes
'''
''' Submitted by: Josh Gilliam
'''
''' Closes PR's: 4429, 4431-4438
'''
''' PS: He has agreed to submit all contrib fixes back to the original author.
'''
''' Revision 1.3  1996/10/05 22:26:23  wosch
''' delete doubled words, e.g.: "the the" -> "the"
'''
''' Revision 1.2  1994/10/27 23:16:52  wollman
''' Convince Perl to that is is part of the system, as /usr/bin/perl (binary)
''' and /usr/share/perl (library).  The latter was chosen as analogous to other
''' directories already present in /usr/share, like /usr/share/groff_font and
''' (particularly) /usr/share/mk.
'''
.\" Revision 1.1.1.1  1994/09/10  06:27:36  gclarkii
.\" Initial import of Perl 4.046 bmaked
.\"
.\" Revision 1.1.1.1  1993/08/23  21:29:37  nate
.\" PERL!
.\"
''' Revision 4.0.1.6  92/06/08  15:07:29  lwall
''' patch20: documented that numbers may contain underline
''' patch20: clarified that DATA may only be read from main script
''' patch20: relaxed requirement for semicolon at the end of a block
''' patch20: added ... as variant on ..
''' patch20: documented need for 1; at the end of a required file
''' patch20: extended bracket-style quotes to two-arg operators: s()() and tr()()
''' patch20: paragraph mode now skips extra newlines automatically
''' patch20: documented PERLLIB and PERLDB
''' patch20: documented limit on size of regexp
''' 
''' Revision 4.0.1.5  91/11/11  16:42:00  lwall
''' patch19: added little-endian pack/unpack options
''' 
''' Revision 4.0.1.4  91/11/05  18:11:05  lwall
''' patch11: added sort {} LIST
''' patch11: added eval {}
''' patch11: documented meaning of scalar(%foo)
''' patch11: sprintf() now supports any length of s field
''' 
''' Revision 4.0.1.3  91/06/10  01:26:02  lwall
''' patch10: documented some newer features in addenda
''' 
''' Revision 4.0.1.2  91/06/07  11:41:23  lwall
''' patch4: added global modifier for pattern matches
''' patch4: default top-of-form format is now FILEHANDLE_TOP
''' patch4: added $^P variable to control calling of perldb routines
''' patch4: added $^F variable to specify maximum system fd, default 2
''' patch4: changed old $^P to $^X
''' 
''' Revision 4.0.1.1  91/04/11  17:50:44  lwall
''' patch1: fixed some typos
''' 
''' Revision 4.0  91/03/20  01:38:08  lwall
''' 4.0 baseline.
''' 
''' 
.de Sh
.br
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp
.if t .sp .5v
.if n .sp
..
.de Ip
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
'''
'''     Set up \*(-- to give an unbreakable dash;
'''     string Tr holds user defined translation string.
'''     Bell System Logo is used as a dummy character.
'''
.tr \(*W-|\(bv\*(Tr
.ie n \{\
.ds -- \(*W-
.if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
.ds L" ""
.ds R" ""
.ds L' '
.ds R' '
'br\}
.el\{\
.ds -- \(em\|
.tr \*(Tr
.ds L" ``
.ds R" ''
.ds L' `
.ds R' '
'br\}
.TH PERL 1 "\*(RP"
.UC
.SH ̾��
perl \- ����Ū��Фȥ�ݡ��ȤΤ���θ���
.SH ��
.B perl
[options] filename args
.SH ����
.I perl
�ϡ�Ǥ�դΥƥ����ȥե����������������������������Ф�������˴��
������ݡ��Ȥ���Ϥ��뤿��˺�Ŭ�����줿���󥿥ץ꥿����Ǥ���
�ޤ���¿���Υ����ƥ������Ȥ�Ŭ��������Ǥ⤢��ޤ���
.I perl
�������� (�����������쥬��ȡ��Ǿ�) �Ȥ������ϡ��ष������Ū 
(�Ȥ��䤹������ΨŪ������) �Ǥ��뤳�Ȥ�ᤶ���Ƥ��ޤ���
.I perl
�ϡ�C, \fIsed\fR, \fIawk\fR, and \fIsh\fR, �κǤ��ɤ��Ȥ�����
�Ȥ߹�碌�Ƥ��� (��Ԥΰո��Ȥ��Ƥϡ��Ǥ���ޤ���) �Τǡ������θ����
�ʤ��ߤΤ���ͤˤϡ��ưפ˻Ȥ���Ǥ��礦��
(������˳ؼԤʤ顢\fIcsh\fR, Pascal, ������ BASIC-PLUS �κ��פˤ�����
�����Ĥ��Ǥ��礦��)
���ν񼰤ϡ�C �Τ�Τ˶ˤ�ƻ��Ƥ��ޤ���
¾��¿���� UNIX �桼�ƥ���ƥ��Ȱۤʤꡢ
.I perl
�ϡ��ǡ����Υ������򾡼�����¤���褦�ʤ��ȤϤʤ� (����Τ���¤�Ǥ�)��
�ե��������Τ��Ĥ�ʸ����Ȥ����ɤ߹���Ǥ��ޤ��ޤ���
�Ƶ��ο����ˤ����¤�����ޤ���Ϣ������ǻȤ���ϥå���ơ��֥�ϡ�
�ѥե����ޥ󥹤��㲼���ɤ����ᡢɬ�פ˱������礭���ʤ�ޤ���
.I perl
�ϡ����̤Υǡ��������˿�®�����������������줿�ѥ�����ޥå�
�ƥ��˥å���Ȥ��ޤ���
�ƥ����������˺�Ŭ������ƤϤ��ޤ�����
.I perl
�ϥХ��ʥ�ǡ����ⰷ�����Ȥ�Ǥ��ơ�(dbm ���Ȥ���ʤ�) Ϣ������˻���
dbm �ե��������ޤ���
setuid
.I perl
������ץȤϡ�¿�����ϼ��餷���������ƥ��ۡ�����ɤ��ǡ����ե�������
�����ˤ�ꡢC �Υץ������������Ǥ���
���̤ʤ� \fIsed\fR, \fIawk\fR, \fIsh\fR ��Ȥ��褦������ǡ�����ǽ�Ϥ�
�ۤ��Ƥ����ꡢ�⤦����®�����餻�ʤ���Фʤ�ʤ��ä��ꡢ
������ʤ����Ȥ� C �ǽ񤭤����ʤ��褦�ʾ���
.I perl
���Ԥä���Ǥ���
��¸��
.I sed
��
.I awk
������ץȤ�
.I perl
������ץȤˤ����Ѵ��ץ������⤢��ޤ���
�����������Ϥ���ǽ�ʬ�Ǥ��礦��
.PP
�ޤ��Ϥ�ˡ�
.I perl
���ξ�꤫�饹����ץȤ�õ���ޤ���
.Ip 1. 4 2
���ޥ�ɥ饤����
.B \-e
�����å��ǻ��ꤵ�줿�ԡ�
.Ip 2. 4 2
���ޥ�ɥ饤���ǡ��ǽ�˻��ꤵ�줿�ե���������ơ�
(#! ��ɽ���򥵥ݡ��Ȥ��륷���ƥ�ϡ����󥿥ץ꥿�򤳤����Ƶ�ư���ޤ�)
.Ip 3. 4 2
ɸ�����Ϥ�����ۤΤ������ɤ߹��ޤ�ޤ�������ϡ��ե�����̾�λ��꤬���
��ʤ����ˤ���Ư���ޤ���\*(--
.I ɸ������
������ץȤ˰������Ϥ��ˤϡ�������ץ�̾�Ȥ�������Ū�� \- ��
���ꤷ�ʤ���Фʤ�ޤ���
.PP
������ץȤ򸫤Ĥ���ȡ�
.I perl
�����������˥���ѥ��뤷��������ץȤ�ʸˡŪ�����������
�����¹Ԥ��ޤ���
.Sh "���ץ����"
����: �ǽ�ˤ��Υ����������ɤ�Ǥ��̣���狼��ʤ����⤷��ޤ���
��ñ�ʥ�ե���󥹤Ȥ�����Ⱦ��ʬ�ˤʤäƤ��ޤ���
.PP
��ʸ�����ץ����ϡ�����³�����ץ����Ȥ��äĤ��Ƥ⤫�ޤ��ޤ���
#! ��¤��Ȥ�������ץȤ�ư����ݤˤϰ�Ĥΰ�������������ʤ���
�ǡ��ä������Ǥ���
��:
.nf

.ne 2
	#!/usr/bin/perl \-spi.bak	# \-s \-p \-i.bak ��Ʊ��
	.\|.\|.

.fi
�ʲ��Υ��ץ���󤬤���ޤ�:
.TP 5
.BI \-0 ����
�쥳���ɥ��ѥ졼�� ($/) �� 8 �ʿ��ǻ��ꤷ�ޤ���
�������ʤ��ȡ��̥륭��饯�������ѥ졼���ˤʤ�ޤ���
¾�Υ��ޥ�ɥ饤�󥹥��å��ϡ������֤������⤷���Ͽ����θ��³���ޤ���
�㤨�С��̥�ʸ����ü�Ȥ����ե�����̾��ɽ����ǽ�ʥС�������
.I find
�ʤ顢���Τ褦�˽񤱤ޤ���
.nf

    find . \-name '*.bak' \-print0 | perl \-n0e unlink

.fi
00 ���ü���ͤǡ�
.I perl
�ϥե������ѥ饰��ե⡼�ɤ��ɤ߹��ߤޤ���
0777 �Ȥ����ͤ�Ȥ��ȡ������ͤ�ʸ���Ϥʤ��Τǡ��ե��������Τ�
�ɤ߹��ߤޤ���
.TP 5
.B \-a
.B \-n
��
.BR \-p
���ץ����Ȱ����Ѥ��ơ������ȥ��ץ�åȥ⡼�ɤ� ON �ˤ��ޤ���
.B \-n
��
.BR \-p
���ץ����Ǽ�ưŪ����������� while �롼�פ���¦��
�ǽ�ΤȤ����ǡ�@F ������Ф��ư��ۤ� split ���ޥ�ɤ��Ԥʤ��ޤ���
.nf

	perl \-ane \'print pop(@F), "\en";\'

�ϡ��������Ʊ���ˤʤ�ޤ���

	while (<>) {
		@F = split(\' \');
		print pop(@F), "\en";
	}

.fi
.TP 5
.B \-c
.I perl
������ץȤ�ʸˡ������å������¹Ԥ����˽�λ���ޤ���
.TP 5
.BI \-d
perl �ǥХå��Τ�Ȥǥ�����ץȤ�¹Ԥ��ޤ���
�ǥХå��Υ��������򻲾Ȥ��Ʋ�������
.TP 5
.BI \-D ����
�ǥХå��ե�å��򥻥åȤ��ޤ���
������ץȤ��ɤΤ褦�˼¹Ԥ���뤫�򸫤�ˤϡ�
.BR \-D14
��Ȥ��ޤ���
(����ϥǥХå���ǽ��
.IR perl
���Ȥ߹���ǥ���ѥ��뤷�����ˤΤ�ư��ޤ���)
\-D1024 ��ͭ�Ѥ��ͤǡ�����ѥ��뤵�줿ʸˡ�ĥ꡼��ꥹ�Ȥ��ޤ���
\-D512 ��Ȥ��ȡ�����ѥ��뤵�줿����ɽ������Ϥ��ޤ���
.TP 5
.BI \-e " ���ޥ�ɥ饤��"
��ԥ�����ץȤ����Ϥ�����˻Ȥ��ޤ���
ʣ���ԥ�����ץȤ��Ȥ�Ω�Ƥ�ˤϡ�ʣ����
.B \-e
���ޥ�ɤ���ꤹ��ФǤ��ޤ���
.B \-e
��Ϳ������ȡ�
.I perl
�ϰ����Υꥹ�Ȥ��椫�饹����ץȥե�����̾��õ���ޤ���
.TP 5
.BI \-i ��ĥ��
<> ��¤�ǽ��������ե�����򤽤ξ�ǽ������뤳�Ȥ���ꤷ�ޤ���
���ϥե�������͡��ष�����ϥե�����򸵤�̾���ǥ����ץ󤷡����ϥե������
print ʸ�Υǥե���Ƚ��Ϥˤ��뤳�Ȥǽ�������ޤ���
��ĥ�Ҥ�Ϳ������С��Хå����åץե������̾���Ȥ��Ƹ��Υե�����̾��
���γ�ĥ�Ҥ�ä�����Τ��Ȥ��ޤ���
��ĥ�Ҥ�Ϳ�����ʤ���С��Хå����åץե�����Ϻ�������ޤ���
\*(L"perl \-p \-i.bak \-e "s/foo/bar/;" .\|.\|. \*(R" ��¹Ԥ��뤳�Ȥϡ�
���Υ�����ץȤ�Ʊ���Ǥ���
.nf

.ne 2
	#!/usr/bin/perl \-pi.bak
	s/foo/bar/;

����ϰʲ��Τ�ΤȤ�Ʊ���ˤʤ�ޤ���

.ne 14
	#!/usr/bin/perl
	while (<>) {
		if ($ARGV ne $oldargv) {
			rename($ARGV, $ARGV . \'.bak\');
			open(ARGVOUT, ">$ARGV");
			select(ARGVOUT);
			$oldargv = $ARGV;
		}
		s/foo/bar/;
	}
	continue {
	    print;	# ����̾���Υե�����˽��Ϥ���
	}
	select(STDOUT);

.fi
��������
.B \-i
���Ѥ�����ˡ�Ǥϡ��ե�����̾���ѹ����줿������Τ뤿��� $ARGV �� $oldargv ��
��Ӥ���ɬ�פ��ʤ��Ȥ��������ۤʤ�ޤ���
�ºݤˤϥե�����ϥ�ɥ�Ȥ��� ARGVOUT �����쥯�Ȥ���ƻȤ��ޤ���
.I STDOUT
���ǥե���Ƚ��ϤΥե�����ϥ�ɥ�Ȥ�����¸���졢
�롼�פΤ��Ȥ��ᤵ��뤳�Ȥ����դ��Ʋ�������
.Sp
���ϥե����뤹�٤Ƥ��ɲä�Ԥʤ����䡢���ֹ��ꥻ�åȤ����ꤹ���硢
�����ϥե�����ν������Τ뤿��� `eof' ��Ȥ����Ȥ��Ǥ��ޤ���
(eof ����򻲾Ȥ��Ʋ�����)
.TP 5
.BI \-I �ǥ��쥯�ȥ�
.B \-P
�Ȱ����Ѥ��� C �ץ�ץ����å��˥��󥯥롼�ɥե�����ΰ��֤�
�Τ餻�ޤ����ǥե���ȤǤϡ�/usr/include �� /usr/lib/perl �򸡺����ޤ���
.TP 5
.BI \-l 8�ʿ�
����������ưŪ�˹Ԥʤ��ޤ�������ˤ���Ĥθ��̤�����ޤ���
�ޤ���
.B \-n
��
.B \-p
�ȶ��˻Ȥ��뤳�Ȥǡ��ԥ����ߥ͡�����ưŪ�˽����ޤ���
����ܤϡ�$\e ����
.I 8�ʿ�
�򥻥åȤ���print ʸ�����٤ƺǸ�˹���ʸ����Ĥ���Ȥ������ȤǤ���
.I 8�ʿ�
����ά���줿���ϡ�$\e �� $/ �θ��ߤ��ͤ򥻥åȤ��ޤ���
�㤨�С��Ԥ� 80 ����ڤ�·���뤿��ˤ�:
.nf

	perl -lpe \'substr($_, 80) = ""\'

.fi
$\e = $/ �Ȥ��������ϥ��ޥ�ɥ饤�󥹥��å���������������
�Ԥʤ���Τǡ�
.B \-l
�������
.B \-0
��³���Ȥ��ϡ����ϥ쥳���ɥ��ѥ졼���Ƚ��ϥ쥳���ɥ��ѥ졼����
�ۤʤ뤳�Ȥ⤢������Ȥ������Ȥ����դ��Ʋ�������
.nf

	gnufind / -print0 | perl -ln0e 'print "found $_" if -p'

.fi
����ϡ�$\e �˲��Ԥ򥻥åȤ���$/ �ˤϥ̥�ʸ���򥻥åȤ��ޤ���
.TP 5
.B \-n
������ץȤ�����˲��˼����롼�פ������ΤȤ���
.I perl
��ư���ޤ�����������ȡ������Υե����������ˤĤ���
\*(L"sed \-n\*(R" �ޤ��� \fIawk\fR ��Ʊ���褦�ʷ����֤����Ԥʤ��ޤ�:
.nf

.ne 3
	while (<>) {
		.\|.\|.		# �����˥�����ץȤ���ޤ�
	}

.fi
�ǥե���Ȥ����ϹԤν��ϤϤ���ʤ����Ȥ����դ��Ʋ�������
���Ϥ��������
.B \-p
�򻲾Ȥ��Ʋ�������
�ʲ��ϡ�1 ���֤��Ť��ե����뤹�٤Ƥ��������ΨŪ����ˡ�Ǥ���
.nf

	find . \-mtime +7 \-print | perl \-nle \'unlink;\'

.fi
���ξ�硢�ե����뤬���Ĥ��뤿�Ӥ˥ץ������򳫻Ϥ���ɬ�פ��ʤ��Τǡ�
find �� \-exec �����å���Ȥ����®���ʤ�ޤ���
.TP 5
.B \-p
������ץȤ�����˲��˼����롼�פ������ΤȤ���
.I perl
��ư���ޤ�����������ȡ������Υե����������ˤĤ���
\fIsed\fR ��Ʊ���褦�ʷ����֤����Ԥʤ��ޤ�:
.nf

.ne 5
	while (<>) {
		.\|.\|.		# �����˥�����ץȤ���ޤ�
	} continue {
		print;
	}

.fi
���ϹԤϼ�ưŪ�˽��Ϥ���뤳�Ȥ����դ��Ʋ�������
���Ϥ�������������С�
.B \-n
�����å���ȤäƲ�������
.B \-p
�ϡ�
.B \-n
�����å���ͥ�褷�ޤ���
.TP 5
.B \-P
.IR perl
�ˤ�륳��ѥ�������� C �ץ�ץ����å����̤��ޤ���
(perl �Υ����Ȥ� cpp ��̿��� # ��ʸ���ǻϤޤ�Τǡ�
�����Ȥ� C �ץ�ץ����å������򤹤�ñ�졢�㤨��
\*(L"if\*(R" �� \*(L"else\*(R" �� \*(L"define\*(R" �ǻϤ�ƤϤʤ�ޤ���)
.TP 5
.B \-s
���ޥ�ɥ饤���ǡ�������ץ�̾�ȥե�����̾�ΰ���
(�ޤ��� \-\|\-) �δ֤ˤ���ƥ����å��ˤĤ��ƴ���Ū�ʲ��Ϥ�Ԥʤ��ޤ���
�����å������Ĥ���ȡ�@ARGV ��������졢�б������ѿ���
.I perl
������ץ���ǥ��åȤ��ޤ���
�ʲ��Υ�����ץȤǤϡ�\-xyz �����å���Ĥ��ƥ�����ץȤ�ư�����Ȥ�
������\*(L"true\*(R" ����Ϥ��ޤ���
.nf

.ne 2
	#!/usr/bin/perl \-s
	if ($xyz) { print "true\en"; }

.fi
.TP 5
.B \-S
������ץȤ�õ���Τˡ��Ķ��ѿ� PATH ���Ѥ��ޤ�
(������ץ�̾�� / �ǻϤޤ�ʤ�������) ��
�̾�ϡ�#! �򥵥ݡ��Ȥ��ʤ��ޥ���ˤ����� #! ��
���ߥ�졼�Ȥ��뤿����Ѥ����ޤ���
���Τ褦�ʻȤ����Ǥ�:
.nf

	#!/usr/bin/perl
	eval "exec /usr/bin/perl \-S $0 $*"
		if $running_under_some_shell;

.fi
�����ƥ�� 1 ���ܤ�̵�뤷��������ץȤ� /bin/sh ���Ϥ��ޤ��� /bin/sh �� 
.I perl
������ץȤ򥷥��륹����ץȤȤ��Ƽ¹Ԥ��褦�Ȥ��ޤ���������� 2 ����
���̾�Υ����륳�ޥ�ɤȤ��Ƽ¹Ԥ���perl ���󥿥ץ꥿��ư����
���Ȥˤʤ�ޤ���
�����ƥ�ˤ�äƤ� $0 ��ɬ������ե�ѥ�̾�ˤʤ�ʤ��Τǡ�
.B \-S
���Ѥ���
.I perl
��ɬ�פʤ�Х�����ץȤ�õ���褦�˻ؼ����ޤ���
.I perl
��������ץȤ򸫤Ĥ������ȡ����Ϥ�Ԥʤ��ޤ������ѿ�
$running_under_some_shell �����ˤʤ뤳�ȤϤʤ��Τǡ�2 ���ܤ�̵�뤷�ޤ���
�ե�����̾�ʤɤ˴ޤޤ�륹�ڡ����������������ˤϡ�$* ����
${1+"$@"} �������褤�Ǥ��礦����csh ����᤹����ˤ�ư��ޤ���
csh �ǤϤʤ� sh �ǵ�ư����ˤϡ����륷���ƥ�Ǥ� #! �Ԥ�perl ��
̵�뤵��륳����Τߤ˽񤭴�����ɬ�פ����뤫�⤷��ޤ��󡣤���¾��
�����ƥ�ǤϤ�����ˡ�ϻȤ��������Τ褦�ˡ�csh, sh, perl �Τɤβ���
��ư���褦�ʡ��ȤƤ�ޤ�꤯�ɤ���ˡ��Ȥ�ɬ�פ�����ޤ�:
.nf

.ne 3
	eval '(exit $?0)' && eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
	& eval 'exec /usr/bin/perl -S $0 $argv:q'
		if 0;

.fi
.TP 5
.B \-u
������ץȤΥ���ѥ���θ塢
.I perl
�ϥ�������פ��ޤ���
���Υ�������פ��顢`undump' �ץ������(�󶡤��Ƥ��ޤ���)���Ѥ���
�¹Բ�ǽ�ե�������Ѵ��Ǥ��ޤ���
��������ȡ��ǥ��������������뤫���� (�¹ԥե������ strip �����
�Ǿ��ˤǤ��ޤ�)���������ȥ��åפ�®���ʤ�ޤ���
(����������Υޥ���Ǥ� "hello world" �μ¹Է������� 200K ���礭��
�ˤʤ�ޤ���)
�¹Է����� set-id �ץ������Ȥ������餻��Τʤ顢�̾�� perl �ǤϤʤ� 
¿ʬ taintperl ���Ѥ��ƥ���ѥ��뤹�٤��Ǥ���
����פ������˼¹Ԥ�����������ץȤ�������ϡ������ dump �黻�Ҥ�
�ȤäƲ�������
���� : undump ���Ȥ��뤫�ɤ����ϥץ�åȥե�����˰�¸����Τǡ�perl �� 
�ܿ��ˤ�äƤ����ѤǤ��ʤ���Τ⤢�뤫�⤷��ޤ���
.TP 5
.B \-U
�����Ǥʤ������ǽ�ˤ��ޤ���
���ߤνꡢ\*(L"�����Ǥʤ�\*(R" ���Ȥϡ������ѥ桼�����¤Ǥ�
�¹Ի��˥ǥ��쥯�ȥ�� unlink ���뤳�ȡ�����ӱ�������å���
�ٹ𤬽Ф�褦�� setuid �ץ����������餻�뤳�Ȥ����Ǥ���
.TP 5
.B \-v
.I perl
�ΥС������ȥѥå���٥����Ϥ��ޤ���
.TP 5
.B \-w
���٤����ФƤ��뼱�̻ҡ����åȤ������˻��Ѥ���륹�����ѿ����Ф��ơ�
�ٹ��Ф��ޤ���
���֥롼���󤬺�������줿�Ȥ����������Ƥ��ʤ��ե�����ϥ�ɥ�λ���
������Ȥ����꡼�ɥ���꡼�ǥ����ץ󤷤��ե�����ϥ�ɥ�ؽ񤭹��⤦��
�����Ȥ��ˤ�ٹ��Ф��ޤ������ͤǤϤʤ��������ͤ� == ��Ȥä��Ȥ��䡢
���֥롼���� 100 ��ʾ�Ƶ������Ȥ��ˤ�ٹ��Ф��ޤ���
.TP 5
.BI \-x �ǥ��쥯�ȥ�
������ץȤ���å������������ޤ�Ƥ��뤳�Ȥ�
.I perl
���Τ餻�ޤ���#! �ǻϤޤꡢ"perl" �Ȥ���ʸ�����ޤ�ǽ�ιԤ������
�ޤǤϡ����ߤȤ���̵�뤵��ޤ���
���ιԤ˻��ꤷ����̣�Τ��륹���å��Ϥ��٤�Ŭ�Ѥ���ޤ�
(�������̾�� #! ������Ʊ�����������å��Τ����ޤ��Ĥ����Ǥ�)��
�ǥ��쥯�ȥ�̾����ꤹ��ȡ�perl �ϥ�����ץȤ�¹Ԥ������ˤ���
�ǥ��쥯�ȥ�˰ܤ�ޤ���
.B \-x
�����å��ϡ���Ƭ�Υ��ߤ�ΤƤ�����Ǥ���
������ץȤθ�˥��ߤ�������ϡ�������ץȤ� _\|_END_\|_
�ǽ���餻�ʤ���Фʤ�ޤ��� (˾��ʤ顢������ץȤǸ���Υ��ߤΰ���
�ޤ���������ե�����ϥ�ɥ� DATA ��ͳ�ǽ������뤳�Ȥ���ǽ�Ǥ�) ��
.Sh "�ǡ����η��ȥ��֥�������"
.PP
.I perl
�ˤ� 3 ����Υǡ�������ͭ��ޤ�: �����顢����������
�����Ϣ������Ǥ���
�̾�������ź�����������Ǥ�����Ϣ������ξ���ʸ����Ǥ���
.PP
perl �ˤ�����黻���ͤβ��ϡ��黻���ͤΥ���ƥ�����(ʸ̮)������׵�
�ˤ��Ф��а�¸���ޤ���
��ʥ���ƥ����Ȥϻ���: ���ʤ��ʸ���󡢿��͡�����Ǥ���
�黻����ˤϡ�������׵᤹�륳��ƥ����ȤǤ�����򡢤����Ǥʤ����
�������ͤ��֤���Τ⤢��ޤ���
(���Τ褦�ʱ黻�ҤˤĤ��Ƥϥɥ��������Τ��α黻�ҤΤȤ�����
���ܤ���Ƥ��ޤ���)
�������ͤ��֤��黻�Ҥϡ�����ƥ����Ȥ�ʸ���󤢤뤤��
���ͤΤɤ�����׵ᤷ�Ƥ��뤫�Ϲ�θ���ޤ��󤬡��������ѿ������
�������ͤ�ʸ���󤢤뤤�Ͽ��ͤΥ���ƥ����Ȥ�Ŭ�ڤ����˲�ᤵ��ޤ���
������Ϥ��줬�̥�ʸ���󤢤뤤�� 0 �Ǥʤ��������Ū�˿��Ǥ����
��ᤵ��ޤ���
�黻�Ҥ��֤������ͤϡ����ξ��� 1�����ξ��� 0 �ޤ��� \'\'
(�̥�ʸ����)�Ǥ���
.PP
�ºݤˤϡ��̥�ʸ���ˤ�����ढ��ޤ���define �� undefined �Ǥ���
undefined �Υ̥�ʸ����ϡ����顼���ե����뽪ü�����������Ƥ��ʤ��ѿ���
�������Ǥ򻲾Ȥ��褦�Ȥ����Ȥ��ʤɡ��ºݤ��ͤ�¸�ߤ��ʤ������֤�ޤ���
undefined �Υ̥�ʸ����ϡ��ǽ�ˤ���˥������������Ȥ��� defined �Ȥʤ�
���Ȥ�����ޤ������������� defined() �黻�Ҥ��Ѥ����ͤ� defined ���ɤ�
�����Τ뤳�Ȥ��Ǥ��ޤ���
.PP
�������ѿ��ؤλ��Ȥϡ����줬����ΰ����Ǥ��äƤ⡢��� \*(L'$\*(R'
�ǻϤ�ޤ���
�Ĥޤꤳ���Ǥ�:
.nf

.ne 3
    $days	\h'|2i'# ñ��ʥ������ѿ�
    $days[28]	\h'|2i'# ���� @days �� 29 ���ܤ�����
    $days{\'Feb\'}\h'|2i'# Ϣ��������ͤΰ��
    $#days	\h'|2i'# ���� @days �κǸ��ź����

����������������������μ��Ф��� \*(L'@\*(R' �ǻϤ�ޤ�:

    @days	\h'|2i'# ($days[0], $days[1],\|.\|.\|. $days[n])
    @days[3,4,5]\h'|2i'# @days[3.\|.5] ��Ʊ��
    @days{'a','c'}\h'|2i'# ($days{'a'},$days{'c'}) ��Ʊ��

�����ơ�Ϣ�����������򰷤��ˤ� \*(L'%\*(R' �ǻϤ�ޤ�:

    %days	\h'|2i'# (key1, val1, key2, val2 .\|.\|.)
.fi
.PP
����� 8 �ĤϤ��٤ƺ����ͤȤ��ư������Ȥ��Ǥ��ޤ������ʤ����������ǽ
�Ȥ������ȤǤ���
(����ˡ����륳��ƥ����ȤǤ��������Τ⺸���ͤȤʤ����ޤ���
\*(-- s, tr, chop �ΤȤ�������򻲾Ȥ��Ʋ�������)
������ؤ�������Ԥʤ��ȡ����դ򥹥���Υ���ƥ����Ȥ�ɾ������Τ�
�Ф������������ΰ����ؤ������ϱ��դ�����Υ���ƥ����Ȥ�ɾ�����ޤ���
.PP
���� @days ������
.IR csh
�Τ褦��
\*(L"$#days\*(R" ��ɾ�����Ƥ⤫�ޤ��ޤ���
(�ºݤˤϡ��̾� 0 ���ܤ����Ǥ�����Τǡ������Ĺ���ǤϤʤ����Ǹ������
��ź�����ˤʤ�ޤ���)
$#days ����������ȡ������Ĺ�����Ѥ��ޤ���
������ˡ�ˤ�ä�����򾮤������Ƥ⡢�ºݤˤ��ͤ��˲�����ޤ���
���Ǥ˾���������������礭������ȡ���Ȥ�Ȥ��ä����Ǥ��������ޤ���
�礭���ʤꤽ��������򤢤餫�����礭�����Ƥ����ȡ�
��Ψ�򤤤��餫�ɤ����뤳�Ȥ�Ǥ��ޤ���
(������礭������ˤϡ�����κǸ��Ķ�������Ǥ���
����Ԥʤ���ˡ�⤢��ޤ���������ˡ�ȡ�$#whatever ������������ˡ�Ȥ�
�㤤�ϡ��֤����Ǥ˥̥뤬���åȤ���뤳�ȤǤ�)
�����̤�ƶ��ˤ���ˤϡ��̥�ꥹ�� () ����������ФǤ��ޤ���
������Ĥ�����Ʊ���Ȥʤ�ޤ���
.nf

	@whatever = ();
	$#whatever = $[ \- 1;

.fi
.PP
����򥹥���Υ���ƥ����Ȥ�ɾ������ȡ������Ĺ�����֤�ޤ���
���μ��Ͼ�˿��Ȥʤ�ޤ�:
.nf

	scalar(@whatever) == $#whatever \- $[ + 1;

.fi
Ϣ������򥹥���Υ���ƥ����Ȥ�ɾ������ȡ��������Ǥ�ޤ���
���Ĥ��ξ��˸¤꿿���ͤ��֤��ޤ���
(���Ǥ���������֤��ͤϡ����Ѥ��Ƥ��� bucket �ο�����ӥ��������Ȥ�
��Ƥ��� bucket �ο���������ʸ����ǡ�/ �Ƕ��ڤ��ޤ���)
.PP
¿���������ľ�ܤϥ��ݡ��Ȥ���Ƥ��ޤ��󤬡�Ϣ��������Ѥ���ʣ����
ź�����򥨥ߥ�졼�Ȥ�����ˡ�ˤĤ��Ƥϡ�$; �ѿ��ι�򻲾Ȥ��Ʋ�������
¿������ź������ 1 ������ź�������Ѵ����륵�֥롼�����񤯤��Ȥ�
�Ǥ��ޤ���
.PP
�ơ��Υǡ������˱����ơ����줾���̾�����֤�����ޤ������ͤ��ۤ���
���Ȥʤ���Ʊ��̾���򥹥����ѿ�������Ϣ�����󡢥ե�����ϥ�ɥ롢
���֥롼����̾���ޤ��ϥ�٥�ˤĤ��뤳�Ȥ��Ǥ��ޤ���
�ѿ�������ؤλ��ȤϾ�� \*(L'$\*(R', \*(L'@\*(R', \*(L'%\*(R'
�ǻϤޤ�Τǡ�\*(L"ͽ��\*(R" ����ѿ�̾�ˤĤ��Ƥϼºݤˤ�
���Ѳ�ǽ�Ǥ���
(����������٥��ե�����ϥ�ɥ�ˤĤ��Ƥ�ͽ���ϻ��ѤǤ��ޤ���
�ü��ʸ���ǻϤޤ�ʤ�����Ǥ���
.br
�ҥ��: open(log,\'logfile\') ��� open(LOG,\'logfile\') ��Ȥä�����
�ɤ��Ǥ�����ʸ���Υե�����ϥ�ɥ�̾��Ȥ��ȡ��ɤ߰פ�����夷��
�����ͽ���ˤʤ��ΤȤξ��ͤ��򤱤뤳�Ȥ��Ǥ��뤫��Ǥ���)
��ʸ����ʸ���ζ��̤Ͻ��פǤ�
\*(--\*(L"FOO\*(R", \*(L"Foo\*(R", \*(L"foo\*(R" �Ϥ��٤ưۤʤ�
̾���Ǥ�������ե��٥åȤǻϤޤ�̾���Ͽ����䲼����ޤ�Ǥ⤫�ޤ��ޤ���
����ե��٥åȤǻϤޤ�ʤ�̾���� 1 ʸ���˸¤��ޤ���
�㤨�С�\*(L"$%\*(R" �� \*(L"$$\*(R" �Ǥ���
(�ۤȤ�ɤΰ�ʸ��̾��
.IR perl
��ͽ���ѿ��Ȥ��ư�̣������ޤ���
�ܺ٤ϸ�ۤɽҤ٤ޤ���)
.PP
����ʸ������̾����ư�������������η����ǻ��ꤷ�ޤ���
.nf

.ne 6
    12345
    12345.67
    .23E-10
    0xffff	# 16 ��
    0377	# 8 ��
    4_294_967_296

.fi
ʸ����ϥ��󥰥륯�����Ȥޤ��ϥ��֥륯�����ȤǶ��ڤ��ޤ���
ư��ϥ�����ˤ����륯�����ȤȤ褯���Ƥ��ޤ���
���֥륯�����ȤǰϤޤ줿ʸ����ˤϥХå�����å�����ѿ����ִ���
�Ԥʤ��ޤ������󥰥륯�����ȤǰϤޤ줿ʸ����ˤϹԤʤ��ޤ���
(\e\' �� \e\e ������ޤ�)��
�̾�ΥХå�����å��嵬§�����Ԥ䥿�֤ʤɤ�ʸ����ɽ���Τ˻Ȥ���
���˰ʲ��Τ���ä��Ѥ�ä�������Ȥ��ޤ�:
.nf

	\et		����
	\en		����
	\er		�꥿����
	\ef		�ե�����ե�����
	\eb		�Хå����ڡ���
	\ea		���顼�� (�٥�)
	\ee		����������
	\e033		8��ʸ��
	\ex1b		16��ʸ��
	\ec[		����ȥ�����ʸ��
	\el		����ʸ����ʸ���ˤ��ޤ�
	\eu		����ʸ������ʸ���ˤ��ޤ�
	\eL		\eE �ޤǤ�ʸ���ˤ��ޤ�
	\eU		\eE �ޤǤ���ʸ���ˤ��ޤ�
	\eE		�羮ʸ���ν����ν���

.fi
���Ԥ�ľ��ʸ����˽�����뤳�Ȥ�Ǥ��ޤ������ʤ����ʸ����ϻϤޤä�
�ԤȰۤʤ�Ԥǽ���뤳�Ȥ��Ǥ��뤳�Ȥˤʤ�ޤ�������������Ǥ�����
�Ǹ�˥������Ȥ�˺���ȡ��������Ȥ�ޤफ�ʤ�Υ�줿�̤ιԤ򸫤Ĥ���ޤ�
.I perl
�ϥ��顼����𤷤ʤ��Ǥ��礦��
ʸ��������ѿ��ִ��ϥ������ѿ����̾����������ΰ����˸¤��ޤ���
(����������ȡ�$ �� @ �ǻϤޤ뼱�̻Ҥȡ�����˳�̤ǰϤޤ줿ź������
����������Ǥ���)
���Υ����ɤ� \*(L"The price is $100.\*(R" ����Ϥ��ޤ���
.nf

.ne 2
    $Price = \'$100\';\h'|3.5i'# ��ᤵ��ޤ���
    print "The price is $Price.\e\|n";\h'|3.5i'# ��ᤵ��ޤ�

.fi
���³������ե��٥åȤ�����ȶ��̤��뤿��ˡ����̻Ҥ� {} �ǰϤ�
���Ȥ��Ǥ��뤳�Ȥ�Ф��Ƥ����Ʋ�������
�ޤ������󥰥륯�����Ȥϼ��̻ҤȤ���ͭ����ʸ���Ǥ��뤿�ᡢ
���󥰥륯�����ȤǰϤޤ줿ʸ����ϡ�����ñ��Ȥ϶���Ƕ��ڤ���
���ʤ���Фʤ�ʤ����Ȥ�Ф��Ƥ����ޤ��礦
(�ѥå������ι�򻲾Ȥ��Ʋ�����) ��
.PP
�ץ������Τ��λ����Ǥι��ֹ�ȥե�����̾��ɽ��
_\|_LINE_\|_ �� _\|_FILE_\|_  �Ȥ�����Ĥ��ü��ʸ��������ޤ���
��������Ω�����ȡ�����Ȥ��ƤΤ߻��ѤǤ���ʸ�������
������뤳�ȤϤǤ��ޤ���
����˥ȡ����� _\|_END_\|_ �ϡ��ºݤΥե����뤬��λ�������ǡ�������ץ�
������Ū�ʽ�λ�򼨤�����˻Ȥ��ޤ����Ĥ�Υƥ����ȤϤ��٤�̵�뤵��ޤ�����
�ե�����ϥ�ɥ� DATA �����ɤळ�Ȥ��Ǥ��ޤ���
(�ե�����ϥ�ɥ� DATA �ϡ��ᥤ�󥹥���ץȤ���Τߥǡ�����
�ɤ߹���ޤ�����require ���줿�ե������ɾ�����줿ʸ���󤫤��
�ɤ߹���ޤ���)
^D �� ^Z ����ĤΥ���ȥ����륭��饯���� _\|_END_\|_ ��Ʊ���ˤʤ�ޤ���
.PP
ʸˡŪ�˲���Բ�ǽ��ñ��ϡ����줬���󥰥륯�����ȤǰϤޤ�Ƥ���
���Τ褦�˰����ޤ������Τ��ᡢ����ե��٥åȡ������������Τߤ���ʤꡢ
ñ��ϥ���ե��٥åȤǻϤޤ�ʤ���Фʤ�ޤ���
�ե�����ϥ�ɥ���٥��Ʊ��������ʸ���Τߤ���ʤ����ñ��ϡ�
�����ͽ���Ⱦ��ͤ������������ޤ���
.B \-w
�����å���Ȥ��С�perl �Ϥ��Τ褦��ñ��ˤĤ��Ʒٹ𤷤Ƥ���ޤ���
.PP
�����ͤ���֥륯�����ȤǰϤޤ줿ʸ��������줿���ϡ�����������Ǥ� 
$" �ѿ��ǻ��ꤵ�����ڤ� (�ǥե���Ȥ϶���) ��Ϣ�뤷�ư�Ĥˤ���
ʸ����ˤʤ�ޤ���
(3.0 �����ΥС������� perl �Ǥϡ�@ �ϥ��֥륯�����ȤǰϤޤ줿ʸ����
����Υ᥿����饯���ǤϤʤ��ä��Τǡ�@array, $array[EXPR],
@array[LIST], $array{EXPR}, @array{LIST} ��ʸ����ؤ������ϡ�
���󤬥ץ������Τɤ����ǻ��Ȥ���Ƥ����硢�⤷����ͽ�󤵤�Ƥ���
���ˤΤߵ�����ޤ���)
������Ĥ�Ʊ���ˤʤ�ޤ���
.nf

.ne 4
	$temp = join($",@ARGV);
	system "echo $temp";

	system "echo @ARGV";

.fi
�����ѥ����� (����ˤ���֥륯�����Ȥ�Ʊ���ִ����Ԥʤ��ޤ�) ��
�����Ƥϡ������ޤ��ʾ�礬����ޤ��� /$foo[bar]/ �� /${foo}[bar]/
([bar]������ɽ����ʸ�����饹) �Ǥ��礦����
����Ȥ� /${foo[bar]}/ ([bar]������ @foo ��ź��) �ʤΤǤ��礦�� ��
@foo ��¸�ߤ��ʤ��ʤ顢��������餫��ʸ�����饹�Ǥ���
@foo ��¸�ߤ���ʤ顢perl �� [bar]�ˤĤ��ƹͤ�������ξ������������
���ޤ������줬�ְ�äƤ����ꡢ���ʤ���ñ���м����ʤ顢
�嵭�Τ褦������ {} ������뤳�Ȥǡ����������򤵤��뤳�Ȥ��Ǥ��ޤ���
.PP
�Իظ��ΰ���ˡ�ϥ������Ʊ�ͤ�ʸˡ�˴�Ť��Ƥ��ޤ���
<< �θ�˰���ʸ�ν����򼨤�ʸ�������ꤹ��ȡ����߹Ԥ��餽��ʸ����
�������ޤǤιԤ��٤Ƥ������ͤˤʤ�ޤ��������򼨤�ʸ����ϼ��̻� 
(ñ��) �Ǥ⡢�������Ȥ��줿�ƥ����ȤǤ⤫�ޤ��ޤ���
�������Ȥ���Ƥ���ƥ����Ȥξ�硢�̾說�����ȤǰϤ����Ʊ����
�������Ȥμ��ब�ƥ����Ȥΰ���������ޤ����������Ȥ���Ƥ��ʤ����̻�
�ϥ��֥륯�����Ȥ���Ƥ������Ʊ��ư��Ȥʤ�ޤ���
(���ڡ��������줿��硢�����ͭ���ʥ̥뼱�̻ҤȤ��ư���졢
�ǽ�ζ��Ԥ˥ޥå����ޤ��� \*(--���� Merry Christmas ����򸫤Ʋ�������) 
�����򼨤�ʸ����Ϥ�������� (�������Ȥ��줺�����������ˤĤ�����)
�񤫤�Ƥ��ʤ���Фʤ�ޤ���
.nf

	print <<EOF;		# �������Ʊ���Ǥ�
The price is $Price.
EOF

	print <<"EOF";		# ������Ʊ���Ǥ�
The price is $Price.
EOF

	print << x 10;		# �̥뼱�̻Ҥ������򼨤��ޤ�
Merry Christmas!

	print <<`EOC`;		# ���ޥ�ɤ�¹Ԥ��ޤ�
echo hi there
echo lo there
EOC

	print <<foo, <<bar;	# �����å����Ѥळ�Ȥ��Ǥ��ޤ�
I said foo.
foo
I said bar.
bar

.fi
����Υ�ƥ��ϡ��ġ����ͤ򥳥�ޤǶ��ڤꡢ�ꥹ�Ȥ��̤ǰϤߤޤ�:
.nf

	(LIST)

.fi
�����ͤ��׵ᤷ�ʤ�����ƥ����ȤǤϡ�C �Υ���ޱ黻�Ҥ�Ʊ�������Ǹ����
�Ǥ��ͤ�������ͤȤʤ�ޤ����㤨�С�
.nf

.ne 4
    @foo = (\'cc\', \'\-E\', $bar);

������ foo ���������ͤ��������ޤ�����

    $foo = (\'cc\', \'\-E\', $bar);

.fi
���ѿ� bar ���ͤ��ѿ� foo ���������ޤ���
�ѿ��Ȥ��Ƽºݤ�¸�ߤ�������Υ�����Υ���ƥ����ȤȤ��Ƥ��ͤϡ�
�����Ĺ���ˤʤ뤳�Ȥ����դ��Ʋ�������
������Ǥ� $foo �� 3 ���������ޤ�:
.nf

.ne 2
    @foo = (\'cc\', \'\-E\', $bar);
    $foo = @foo;		# $foo �� 3 �ˤʤ�ޤ�

.fi
�����ƥ��γ�̤��Ĥ�������;ʬ�ʥ���ޤ����äƤ�����פǡ�
�ʲ��Τ褦�˽񤱤ޤ�:
.nf

    @foo = (
	1,
	2,
	3,
    );

.fi
�ꥹ�Ȥ�ɾ�������Ȥ����ꥹ�Ȥ����ǤϤ��٤�����Υ���ƥ����ȤȤ���
ɾ�����졢��̤Ȥ��������������ͤˡ��ġ������Ǥ��ꥹ�ȤΥ��Ф�
���ä����Τ褦�˥ꥹ�Ȥ���������ޤ���
���Ȥ��С�@foo �Τ��٤Ƥ����ǡ�@bar �Τ��٤Ƥ����ǡ����֥롼����
SomeSub ���֤����٤Ƥ����Ǥ�ޤ�ꥹ��\*(--�ʲ�

	(@foo,@bar,&SomeSub)

����Ǥϡ�����μ��̤��Ǥ��ʤ��ʤ�ޤ���
.PP
�ꥹ�Ȥ��ͤ��̾�������Ʊ�ͤ�ź������Ĥ��ƻȤ��ޤ���
��:
.nf

	$time = (stat($file))[8];	# stat �������ͤ��֤��ޤ�
	$digit = ('a','b','c','d','e','f')[$digit-10];
	return (pop(@foo),pop(@foo))[0];

.fi
.PP
����Υꥹ�Ȥϡ����Τ��٤Ƥ����Ǥ������ͤǤ���Ȥ��˸¤�������ǽ�Ǥ�:
.nf

    ($a, $b, $c) = (1, 2, 3);

    ($map{\'red\'}, $map{\'blue\'}, $map{\'green\'}) = (0x00f, 0x0f0, 0xf00);

�Ǹ�����Ǥ������Ϣ������Ǥ��äƤ⤫�ޤ��ޤ���:

    ($a, $b, @rest) = split;
    local($a, $b, %rest) = @_;

.fi
�ºݤˤϡ��ꥹ�ȤΤɤ������������Ƥ⤤���ΤǤ������ꥹ����κǽ��
���󤬤��٤Ƥ��ͤ����Ƥ��ޤ��Τǡ����θ�����Ǥϥ̥���ͤˤʤ�ޤ���
����� local() �ˤ������������⤷��ޤ���
.PP
Ϣ������Υ�ƥ��ϡ��������ͤȤ��Ʋ�ᤵ����ͤ��Ȥ�ޤ�Ǥ��ޤ�:
.nf

.ne 2
    # �嵭 map �ؤ�������Ʊ��
    %map = ('red',0x00f,'blue',0x0f0,'green',0xf00);

.fi
������Υ���ƥ����Ȥؤ�����������ϡ������α��դμ��ˤ�����������
���Ǥο����֤��ޤ�:
.nf

	$x = (($foo,$bar) = (3,2,1));	# $x �� 2 �Ǥʤ� 3 �򥻥å�

.fi
.PP
�ΤäƤ����ʤ���Фʤ�ʤ����Ĥ��ε�����ƥ�뤬����ޤ���
ʸ����� `` (�㥢�������) �ǰϤ����硢���礦�ɥ��֥륯�����Ȥ�
Ʊ���ѿ��ִ����Ԥʤ��ޤ������˥��������Τ褦�ˡ����ޥ�ɤǤ����
��ᤵ�졢���Υ��ޥ�ɤν��Ϥ����ε�����ƥ����ͤȤʤ�ޤ���
������Υ���ƥ����ȤǤϡ������Ϥ��������Ĥ�ʸ�����֤���ޤ���
����Υ���ƥ����ȤǤϡ����ϤγƹԤ����줾���Ĥ����ǤȤʤä�������
���֤���ޤ���
(�ԥ����ߥ͡������Ѥ��������ˤϡ�$/ �򥻥åȤǤ��ޤ���)
���ޥ�ɤϵ�����ƥ�뤬ɾ������뤿�Ӥ˼¹Ԥ���ޤ������ޥ�ɤ������
�ϡ�$? ���֤���ޤ�
($? �β��ˤĤ��Ƥ�ͽ���ѿ��Υ��������򻲾Ȥ��Ʋ�����) ��
\f2csh\f1 �ξ��Ȱۤʤꡢ�֤����ǡ������ִ��ϹԤʤ��ޤ���
\*(-- ���Ԥϲ��ԤȤ��ƻĤ�ޤ���
�ɤΥ�����Ȥ��äơ����󥰥륯�����ȤǰϤ�Ǥ⥳�ޥ������ѿ�̾�ϲ�
�ᤵ��Ƥ��ޤ��ޤ���
$ �򥷥�����Ϥ��ˤϡ��Хå�����å��夬ɬ�פǤ���
.PP
������� <> �˰Ϥޤ줿�ե�����ϥ�ɥ��ɾ������ȡ����Υե����뤫�鼡��
�Ԥ��ɤ߹��ߤޤ� (���Ԥ��ޤޤ�뤿�� EOF �ޤǤϷ褷�Ƶ�������ޤ���
EOF �Ǥ� undefined �ͤ��֤�ޤ�) ��
�̾�Ϥ����ͤ��ѿ�����������ɬ�פ�����ޤ�������Ĥ���
��ưŪ�����������������������ޤ������ϥ���ܥ������ while �롼�פ�
���ʸ����ˤ������(�����Ƥ��ξ��ˤ�����)���ͤ��ѿ�
\*(L"$_\*(R" �˼�ưŪ����������ޤ���
(��̯�˻פ����⤷��ޤ��󤬡��ۤȤ�ɤ�
.I perl
������ץȤˤ����ơ����ι�ʸ��Ȥ����Ȥˤʤ�Ǥ��礦��)
�Ȥˤ�����������Ϥ��٤�Ʊ���Ȥʤ�ޤ���
.nf

.ne 5
    while ($_ = <STDIN>) { print; }
    while (<STDIN>) { print; }
    for (\|;\|<STDIN>;\|) { print; }
    print while $_ = <STDIN>;
    print while <STDIN>;

.fi
�ե�����ϥ�ɥ�
.IR STDIN ,
.IR STDOUT ,
.I STDERR
��ͽ�󤵤�Ƥ��ޤ���
(�ե�����ϥ�ɥ�
.IR stdin ,
.IR stdout ,
.I stderr
�Ǥ�ư��ޤ������ѥå���������Ǥϥ������Х�ǤϤʤ���������ʼ��̻�
�Ȥ��Ʋ�ᤵ���Τǡ�Ư���ޤ���)
����ʳ��Υե�����ϥ�ɥ�ϡ�
.I open
�ؿ��Ǻ����Ǥ��ޤ���
.PP
�����õ������ƥ����Ȥ���� <FILEHANDLE> ���Ȥ���ȡ����٤Ƥ����Ϲ�
�ΰ�Ԥ������ǤǤ��������֤�ޤ���������ˡ��*����*�ʥǡ������֤���ñ
�˺����Τǡ����դ��ƻȤäƲ�������
.PP
�̥�ե�����ϥ�ɥ� <> ���ü�ǡ�\fIsed\fR �� \fIawk\fR ��ư���
���ߥ�졼�Ȥ��뤿��˻Ȥ��ޤ���
<> ��������Ϥˤϡ�ɸ�����Ϥ䥳�ޥ�ɥ饤����¤٤�줿���ե����뤬
����ޤ���ư��λ����Ϥ����ʤ�ޤ��� <> �κǽ��ɾ���Ǥϡ�ARGV ����
�����å����졢���줬�̥�Ǥ���ȡ�$ARGV[0] ��ɸ�����Ϥ򥪡��ץ󤹤� \'-\'
�˥��åȤ���ޤ���
���� ARGV ���󤬥ե�����̾�Υꥹ�ȤȤ��ƽ�������ޤ���
���Υ롼�פϡ�
.nf

.ne 3
	while (<>) {
		.\|.\|.			# �ƹԤ��Ф��륳����
	}

.ne 10
�ʲ��ε��������ɤ�Ʊ���ˤʤ�ޤ���

	unshift(@ARGV, \'\-\') \|if \|$#ARGV < $[;
	while ($ARGV = shift) {
		open(ARGV, $ARGV);
		while (<ARGV>) {
			.\|.\|.		# �ƹԤ��Ф��륳����
		}
	}

.fi
���Ԥϡ��񤯤Τ����ݤǤʤ��Ȥ��������ǡ�Ʊ���褦��ư��ޤ���
�ºݤˤϡ����ԤǤ� ���� ARGV �� shift �������ߤΥե�����̾���ѿ� ARGV 
���������ޤ���
�����Ǥϡ��ե�����ϥ�ɥ� ARGV ��Ȥ��ޤ� \*(--<> �ϡ����Ū�� <ARGV> 
�Ȥޤä���Ʊ���Ǥ���
(��ε��������ɤǤϡ�<ARGV> �����Ū�Ǥʤ���ΤȤ��ư����Τǡ�
ư���ޤ���)
.PP
�ե�����̾�Υꥹ�Ȥ����󤬻ĤäƤ���¤ꡢ�ǽ�� <> ������ @ARGV ��
�ѹ����뤳�Ȥ��Ǥ��ޤ���
���ֹ� ($.) �����Ϥ���Ĥ��礭�ʥե�����Ǥ��뤫�Τ褦�������Ƥ����ޤ���
(�ե�������˹��ֹ��ꥻ�åȤ�����ˡ�ˤĤ��Ƥ� eof ����򻲾Ȥ���
��������)
.PP
.ne 5
@ARGV �˼�ʬ�ǥե�����Υꥹ�Ȥ򥻥åȤ��������ϡ��������Ʋ�������
������ץȤ˥����å����Ϥ�������硢������ץȤ��������˼��Τ褦��
�롼�פ��֤����ȤǤǤ��ޤ�:
.nf

.ne 10
	while ($_ = $ARGV[0], /\|^\-/\|) {
		shift;
	    last if /\|^\-\|\-$\|/\|;
		/\|^\-D\|(.*\|)/ \|&& \|($debug = $1);
		/\|^\-v\|/ \|&& \|$verbose++;
		.\|.\|.		# ¾�Υ����å�
	}
	while (<>) {
		.\|.\|.		# �ƹԤ��Ф��륳����
	}

.fi
<> ����ܥ�ϰ�����*��*���֤��ޤ���
���θ塢�⤦���ٸƤ֤ȡ��̤� @ARGV �ꥹ�Ȥ�������Ƥ���Ȥߤʤ��ơ�
@ARGV �����åȤ���Ƥ��ʤ�����
.IR STDIN
�������Ϥ���뤳�Ȥˤʤ�ޤ���
.PP
������̤����ʸ���󤬥������ѿ��ؤλ��ȤǤ���Ȥ� (�㤨�� <$foo>) ��
�����ѿ������Ƥ��ɤ߹���٤��ե�����ϥ�ɥ�̾�Ȥʤ�ޤ���
.PP
������̤����ʸ���󤬥ե�����ϥ�ɥ�ǤϤʤ��Ȥ������� (glob) �����
�ե�����ѥ�����Ȳ�ᤵ�졢����ƥ����Ȥˤ�äƥե�����̾������
�ޤ��ϥꥹ�Ȥ���μ��Υե����뤬�֤���ޤ���
�ǽ�� $ �β��ΰ��٥뤬�Ԥʤ��ޤ�����<$foo> �����������
�������줿�褦�ʴ��ܥե�����ϥ�ɥ�Ȥʤ뤿��Ȥ��ޤ���
����Ū�˥ե�����̾�����Ȳ�ᤵ��������� <${foo}> �Τ褦��
���� {} �������Ǥ��ޤ���
��:
.nf

.ne 3
	while (<*.c>) {
		chmod 0644, $_;
	}

�ϰʲ��������Ǥ���

.ne 5
	open(foo, "echo *.c | tr \-s \' \et\er\ef\' \'\e\e012\e\e012\e\e012\e\e012\'|");
	while (<foo>) {
		chop;
		chmod 0644, $_;
	}

.fi
�ºݡ����ߤΤȤ������Τ褦�˼�������Ƥޤ���
(����ϡ��ޥ����� /bin/csh ���ʤ���С������ޤ�ե�����̾�Ǥ�
ư���ʤ����Ȥ��̣���ޤ���)
������󡢾������Ԥʤ�����û����ˡ�ϡ�
.nf

	chmod 0644, <*.c>;

.fi
�Ǥ���
.Sh "ʸˡ"
.PP
.I perl
������ץȤϡ���Ϣ������ȥ��ޥ�ɤ���ʤ�ޤ���
.I perl
������������ʤ���Фʤ�ʤ���Τϡ���ݡ��ȥե����ޥåȤ�
���֥롼����Ǥ���
����������ξܤ��������ϲ��Υ��������򻲾Ȥ��Ʋ�������
���������Ƥ��ʤ��桼���������������֥������Ȥϡ����줬�����Τ褦��
����Ū����������ޤǤϡ��̥�ޤ��� 0 ���ͤǤ���Ȥߤʤ���ޤ���
���ޥ���󤬳����ϹԤ��Ф��Ƽ¹Ԥ����
.I sed
��
.I awk
������ץȤȰ�äơ����ޥ����ϰ��٤����¹Ԥ���ޤ���
���ϥե����� (�ޤ���ʣ���Υե�����) �γƹԤˤĤ��Ʒ����֤���Ԥ��ˤ�
����Ū�˥롼�פ��ߤ��ʤ���Фʤ�ޤ��󤬡�
���ܤ���ե����롢�Ԥ���褯����ȥ����뤹�뤳�Ȥ��Ǥ��ޤ���
(�¤ϡ�����������ޤ��� \*(-- 
.B \-n
��
.B \-p
�����å��ǡ����ۤΥ롼�פ�Ԥʤ����Ȥ��Ǥ��ޤ���)
.PP
����ϡ����ޥ�ɤ�񤯤��Ȥ��Ǥ�����ʤ�ɤ��ˤǤ�񤯤��Ȥ��Ǥ��ޤ�����
���ޥ�ɼ¹Ԥδ���Ū��ή��ˤϱƶ���Ϳ���ޤ��� \*(-- ����ϡ�
����ѥ���������ˤ����ƶ���Ϳ���ޤ����̾���٤Ƥ������
������ץȤκǽ餫�Ǹ�Τɤ��餫���֤��ޤ���
.PP
.I perl
�ϡ��ۤȤ�ɤ���ʬ�ˤ����Ƽ�ͳ��������Ǥ���
(ͣ����㳰�ϥե����ޥå�����ǡ���ͳ�ϼ¤�����Ǥ���)
�����Ȥϡ�# ʸ���ǻؼ����졢�����ޤǤȤʤ�ޤ���
/* */ �Ȥ��� C �Υ����Ȥ�Ȥ����Ȥ���ȡ�����ƥ����Ȥˤ��
�����ޤ��ϥѥ�����ޥå��Ȳ�ᤵ���Τǡ������������ȤϤ��ʤ��Dz�������
.Sh "ʣ��ʸ"
.IR perl
�Ǥϡ�ʣ���Υ��ޥ��������� {} �ǰϤळ�Ȥǡ���ĤΥ��ޥ�ɤȤ���
�������Ȥˤʤꡢ�����֥��å��ȸƤӤޤ���
.PP
���Τ褦��ʣ�祳�ޥ�ɤϡ��ե�������ȥ�����˻Ȥ��ޤ�:
.nf

.ne 4
	if (EXPR) BLOCK
	if (EXPR) BLOCK else BLOCK
	if (EXPR) BLOCK elsif (EXPR) BLOCK .\|.\|. else BLOCK
	LABEL while (EXPR) BLOCK
	LABEL while (EXPR) BLOCK continue BLOCK
	LABEL for (EXPR; EXPR; EXPR) BLOCK
	LABEL foreach VAR (ARRAY) BLOCK
	LABEL BLOCK continue BLOCK

.fi
C �� Pascal �Ȱ�äơ�������ʸ�ǤϤʤ�*�֥��å�*�Ȥ����������Ƥ��뤳
�Ȥ����դ��Ʋ�������
����ϡ����� {} ����\fIɬ�פǤ���\fR ���Ȥ��̣���ޤ� \*(-- ��Ĥ�
ʸ���֤����Ȥϵ�����ޤ���
���� {} �ʤ��ǽ񤭤������ϡ��̤���ˡ������ޤ���
�ʲ��Ϥ��٤�Ʊ���Τ��Ȥ�Ԥʤ��ޤ�:
.nf

.ne 5
	if (!open(foo)) { die "Can't open $foo: $!"; }
	die "Can't open $foo: $!" unless open(foo);
	open(foo) || die "Can't open $foo: $!";	# foo �Ǥʤ���н����
	open(foo) ? \'hi mom\' : die "Can't open $foo: $!";
				# �Ǹ�Τ�Τϡ�����äȥ��������å�

.fi
.PP
.I if
ʸ��ñ��Ǥ���
*�֥��å�*�ϡ�������� {} �ǰϤޤ�뤿�ᡢ
.I else
�����ɤ�
.I if
�ˤ����뤫�Ȥ���ۣ�椵�������ޤ���
.I unless
��
.IR if
������˻Ȥ��ȡ��դΰ�̣�Ȥʤ�ޤ���
.PP
.I while
ʸ�ϡ������� (�̥�ʸ����ޤ��� 0 �Ǥʤ�) �Ǥ���¤ꡢ�֥��å���
�¹Ԥ�³���ޤ���
���̻Ҥȥ����󤫤�ʤ��٥��Ĥ��뤳�Ȥ�Ǥ��ޤ���
��٥�ϥ롼������ʸ
.IR next ,
.IR last ,
.I redo
(�ʲ��򻲾�)
�ˤ�äƻؤ������롼�פ�̾���Ȥʤ�ޤ���
.I continue
�֥��å�������ȡ����ʸ����ɾ�����������ɬ���¹Ԥ��졢C �ˤ�����
.I for
�롼�פλ����ܤ���ʬ��Ʊ�ͤȤʤ�ޤ���
�������ơ����Ȥ�
.I next
ʸ�Ƿ�³���줿���Ǥ�롼���ѿ��ϥ��󥯥���ȤǤ��뤳�Ȥˤʤ�ޤ�
(C �� \*(L"continue\*(R" ʸ��Ʊ��) ��
.PP
.I while
��
.IR until
���֤���������� �ƥ��Ȥΰ�̣�ϵդˤʤ�ޤ��������Ƚ�ǤϺǽ�Υ롼��
�����˹Ԥʤ��ޤ���
.PP
.I if
��
.I while
ʸ�Ǥϡ�\*(L"(EXPR)\*(R" ��֥��å����֤������뤳�Ȥ��Ǥ���
�֥��å��κǸ�Υ��ޥ�ɤ��ͤ����ʤ顢���Ƚ�ǤϿ��Ȥʤ�ޤ���
.PP
.I for
�롼�פϡ��б�����
.I while
������Ʊ���褦��ư��ޤ�:
.nf

.ne 12
	for ($i = 1; $i < 10; $i++) {
		.\|.\|.
	}

�ϡ��ʲ���Ʊ���ˤʤ�ޤ���

	$i = 1;
	while ($i < 10) {
		.\|.\|.
	} continue {
		$i++;
	}
.fi
.PP
foreach �롼�פϡ��̾�������ͤˤĤ��ơ�����γ����Ǥ��ѿ� VAR �˽��
���åȤ��ʤ��鷫���֤��ޤ���
�����ѿ��ϡ��롼�פ��Ф��ư��ۤΤ����˥�������Ǥ��ꡢ����������ͤϥ롼
�פ�ȴ����ȸ����ͤ����ޤ���
\*(L"foreach\*(R" ������ɤϡ��¤� \*(L"for\*(R" ������ɤ�Ʊ���ǡ�
\*(L"foreach\*(R" ��������Τ���ˡ�\*(L"for\*(R" ��ʷ餵�Τ����
�Ȥ����Ȥ��Ǥ��ޤ���
VAR ����ά�����ȡ�$_ �����ͤ˥��åȤ���ޤ���
ARRAY ���ºݤ����� (������֤����ǤϤʤ�) �ξ�硢�롼����� VAR ����
�����뤳�Ȥˤ�äơ�����γ����Ǥ��ѹ����뤳�Ȥ��Ǥ��ޤ���
��:
.nf

.ne 5
	for (@ary) { s/foo/bar/; }

	foreach $elem (@elements) {
		$elem *= 2;
	}

.ne 3
	for ((10,9,8,7,6,5,4,3,2,1,\'BOOM\')) {
		print $_, "\en"; sleep(1);
	}

	for (1..15) { print "Merry Christmas\en"; }

.ne 3
	foreach $item (split(/:[\e\e\en:]*/, $ENV{\'TERMCAP\'})) {
		print "Item: $item\en";
	}

.fi
.PP
�֥��å����켫�� (��٥뤬�դ��Ƥ��Ƥ⡢�դ��Ƥ��ʤ��Ƥ�) �ϡ����٤���
�¹Ԥ����롼�פ������Ǥ���
�����顢�֥��å���ȴ������Ƽ¹Ԥ��뤿��ˡ����٤ƤΥ롼������ʸ��Ȥ�
���Ȥ��Ǥ��ޤ���
.I continue
�֥��å����դ����ޤ���
���ι����ϡ�case ��¤���������ˤ��ä�ͭ�ѤǤ���
.nf

.ne 6
	foo: {
		if (/^abc/) { $abc = 1; last foo; }
		if (/^def/) { $def = 1; last foo; }
		if (/^xyz/) { $xyz = 1; last foo; }
		$nothing = 1;
	}

.fi
Ʊ���Τ�Τ򵭽Ҥ�����ˡ�������ˤ����Ĥ⤢��Τǡ�perl �ˤϸ����� 
switch ʸ������ޤ���
�嵭�Τ�Τ˲ä��ơ�
.nf

.ne 6
	foo: {
		$abc = 1, last foo  if /^abc/;
		$def = 1, last foo  if /^def/;
		$xyz = 1, last foo  if /^xyz/;
		$nothing = 1;
	}

�ޤ���

.ne 6
	foo: {
		/^abc/ && do { $abc = 1; last foo; };
		/^def/ && do { $def = 1; last foo; };
		/^xyz/ && do { $xyz = 1; last foo; };
		$nothing = 1;
	}

�ޤ���

.ne 6
	foo: {
		/^abc/ && ($abc = 1, last foo);
		/^def/ && ($def = 1, last foo);
		/^xyz/ && ($xyz = 1, last foo);
		$nothing = 1;
	}

�����

.ne 8
	if (/^abc/)
		{ $abc = 1; }
	elsif (/^def/)
		{ $def = 1; }
	elsif (/^xyz/)
		{ $xyz = 1; }
	else
		{$nothing = 1;}

.fi
�Ȥ�񤱤ޤ���
�����Ϥ��٤������� switch ��¤�˺�Ŭ������뤿�ᡢperl ��ľ����Ū��
ʸ�˥����פ���Τǡ�Ʊ��ñ��ʥ������ѿ��� == �� eq ��嵭�Τ褦��
�ѥ�����ޥå���Ƚ�ꤹ��¤ꡢ50 �Ĥ� elsif ��ȤäƤ� perl ����������
�����פ�ʸ��¹Ԥ���ΤǤϡ��Ȥ������ۤ����פȤʤ�ޤ���
(��������� case ���ơ��ȥ��Ȥ���Ŭ������Ƥ��뤫�ɤ����˶�̣������ʤ顢
\-D1024 �����å����դ��Ƽ¹�����ʸˡ�ĥ꡼��ɽ�����뤳�Ȥ��Ǥ��ޤ���)
.Sh "ñʸ"
ñʸ�Τߤ����������Ѥ�ɾ������뼰�Ȥʤ�ޤ���
�ɤ�ñʸ��֥��å��κǸ��ʸ�Ǥʤ��¤ꡢ���ߥ�����ǽ���ʤ����
�ʤ�ޤ��󡣺Ǹ��ʸ�Ǥϡ����ߥ�����Ϥʤ��Ƥ⤫�ޤ��ޤ���
(����Ǥ⡢�֥��å�����԰ʾ��ޤ�Ǥ���Τʤ顢
���ߥ�����Ϥ��ä�����˾�ޤ����Ǥ�)
.PP
�ɤ�ñʸ�⡢���ߥ�����ǽ������˰�Ĥν����Ҥ�³���뤳�Ȥ��Ǥ��ޤ���
��ǽ�ʽ����Ҥϰʲ����̤�Ǥ�:
.nf

.ne 4
	if EXPR
	unless EXPR
	while EXPR
	until EXPR

.fi
.I if
��
.I unless
�����Ҥϸ������̤�ΰ�̣������ޤ���
.I while
��
.I until
�����Ҥ⸫�����̤�ΰ�̣ (���ʸ���Ϥ��ɾ������ޤ�) �Ǥ�����
do �֥��å��� do ���֥롼���󥳥ޥ�ɤ��դ���줿�Ȥ��ˤϰۤʤꡢ
��P��ɾ����������˰��٤����¹Ԥ���ޤ���
����ϡ��ʲ��Τ褦�ʥ롼�פ����ҤǤ���褦�ˤ��뤿��Ǥ�:
.nf

.ne 4
	do {
		$_ = <STDIN>;
		.\|.\|.
	} until $_ \|eq \|".\|\e\|n";

.fi
(��Ҥ�
.I do
�黻�Ҥ򻲾ȤΤ��ȡ������Ҥϡ��ɤ��롼�ץ�٥����Ƥʤ����ᡢ
��˽񤫤줿�롼�����楳�ޥ�ɤϤ��ι�¤�Ǥ�ư���ʤ����Ȥ�
����Ĥ��Ʋ��������������餺��)
.Sh "��"
.I perl
�μ��ϡ��ۤȤ�� C �μ���Ʊ����ư��ޤ������㤤�򤳤��˽Ҥ٤ޤ���
.PP
�ʲ���
.I perl
�ˤ��äơ�C �ˤʤ���ΤǤ�:
.Ip ** 8 2
�ؿ��黻�ҡ�
.Ip **= 8
�ؿ������黻�ҡ�
.Ip (\|) 8 3
�����̥�˽�������뤿��˻Ȥ����̥�ꥹ�ȡ�
.Ip . 8
2 �Ĥ�ʸ����η��黻�ҡ�
.Ip .= 8
��������黻�ҡ�
.Ip eq 8
ʸ�����Ʊ���� (== �Ͽ��ͤ�Ʊ����) ��
�Ф��뤿��ˤϡ�\*(L"eq\*(R" ��ʸ����Ǥ���ȹͤ�����ɤ��Ǥ���
(�����˱����ơ�== ��ʸ����ȿ��ͤ�ξ����Ʊ������ɽ��
.I awk
�˴���Ƥ���ͤϡ������Ǥ��������ʤ���Фʤ�ʤ����Ȥ˵���Ĥ��Ʋ����� !)
.Ip ne 8
ʸ�������Ʊ���� (!= �Ͽ��ͤ���Ʊ����) ��
.Ip lt 8
ʸ����� less than
.Ip gt 8
ʸ����� greater than
.Ip le 8
ʸ����� less than or equal
.Ip ge 8
ʸ����� greater than or equal
.Ip cmp 8
ʸ�������ӡ� -1, 0, 1 ���֤��ޤ���
.Ip <=> 8
���ͤ���ӡ� -1, 0, 1 ���֤��ޤ���
.Ip =~ 8 2
�黻�ˤϡ��������ѹ���ǥե���Ȥ�ʸ���� \*(L"$_\*(R" ���Ф��ƹԤ����
������ޤ���
���α黻�Ҥ��Ѥ���ȡ��̤�ʸ������Ф��Ƥ��α黻���Ԥ��ޤ���
���ΰ����ϡ������ѥ������ִ����Ѵ��Ǥ���
���ΰ����ϡ��ǥե���Ȥ� \*(L"$_\*(R" ������˸������ִ����Ѵ���
�Ԥʤ����оݤȤʤ��ΤǤ���
����ͤϡ��黻�����ݤ򼨤��ޤ���
(���ΰ����������ѥ������ִ����Ѵ��ʳ��μ��ʤ顢�¹Ի��˸����ѥ�����
�Ȥ��Ʋ�ᤵ��ޤ������ѥ�����ϼ���ɾ��������٤˥���ѥ��뤵��ʤ���
�Фʤ�ʤ��Τǡ�����Ū�ʸ�������ΨŪ�ǤϤ���ޤ���)
���α黻�Ҥ�ͥ���٤�ñ��ޥ��ʥ��黻�� (-) ��autoincrement/decrement
(++, --) ����㤯��¾�Τɤα黻�Ҥ���⤯�ʤ�ޤ���
.Ip !~ 8
����ͤ����ꤵ��뤳�Ȥ������ =~ ��Ʊ���Ǥ���
.Ip x 8
�����֤��黻�ҡ�
�����ڥ��ɤ򱦥��ڥ��ɤǻ��ꤷ��������������֤���ʸ������֤��ޤ���
����Υ���ƥ����ȤǤϡ������ڥ��ɤ���̤����ä��ꥹ�Ȥξ�硢
�ꥹ�Ȥ򷫤��֤��ޤ���
.nf

	print \'\-\' x 80;		# ���å���������Ϥ��ޤ�
	print \'\-\' x80;		# ������x80 �ϼ��̻�

	print "\et" x ($tab/8), \' \' x ($tab%8);	# ���֤��Ѵ�

	@ones = (1) x 80;		# 80 �� 1 ���¤������
	@ones = (5) x @ones;		# �����Ǥ� 5 �˥��å�

.fi
.Ip x= 8
�����֤������黻�ҡ�
��������Ф��ƤΤ�ư��ޤ���
.Ip .\|. 8
�ϰϱ黻�ҡ�����ƥ����Ȥˤ�äơ��ºݤ���Ĥΰۤʤ�黻�Ҥˤʤ�ޤ���
����Υ���ƥ����ȤǤϡ������ͤ��鱦���ͤޤǰ�Ĥ��Ŀ������䤷�������
�֤��ޤ���
����ϡ�\*(L"for (1..10)\*(R" �Ȥ����롼�פ�������ڤ�Ф� (slice) ��
�Ԥʤ��Ȥ��������Ǥ���
.Sp
������Υ���ƥ����ȤǤϡ�.\|. �������ͤ��֤��ޤ���
���α黻�Ҥϡ�flip-flop �Τ褦����Ĥ��ͤ��ꡢ
sed �� awk �䤤�������ʥ��ǥ����ι��ϰ� (comma) �黻�Ҥ򥨥ߥ�졼��
���ޤ���
�� .\|. �黻�ҤϤ��켫�Ȥ������ͤ��ݻ��������Υ��ڥ��ɤ����Ǥ���¤�
���Ȥʤ�ޤ���
���Υ��ڥ��ɤ����ˤʤ�ȡ��ϰϱ黻�Ҥϡ����Υ��ڥ��ɤ����ˤʤ�ޤ�
���Ȥʤ�ޤ������θ塢�ϰϱ黻�Ҥ��Ƥӵ��Ȥʤ�ޤ���
(�����ϰϻ���黻�Ҥ�ɾ�������ޤǡ����ˤϤʤ�ޤ���
���ˤʤä��Τ�Ʊ��ɾ����Ԥä��� (awk��Ʊ��) �˱��Υ��ڥ��ɤ�ƥ���
���ơ����ˤʤ뤳�Ȥ��������ޤ��������٤Ͽ����֤��ޤ���
����ɾ���ޤDZ��Υ��ڥ��ɤ�ƥ��Ȥ������ʤ���� (sed �Τ褦��) �����
�ˤ��뤫���˻��ĤΥɥå� (.\|.\|.) ��ȤäƲ�������)
���Υ��ڥ��ɤϡ��黻�Ҥ� \*(L"��\*(R" �ξ��֤Ǥ���֤ϡ�
ɾ�����줺�����Υ��ڥ��ɤϱ黻�Ҥ� \*(L"��\*(R" �Ǥ���֤�
ɾ������ޤ���
|| �� && ���ͥ���٤Ϥ���㤯�ʤ�ޤ���
����ͤϡ����Ǥϥ̥�ʸ����ˡ����Ǥ� (1�ǻϤޤ�) Ϣ³��������
�ʤ�ޤ���
���ο��ϡ��ϰϻ�����˥ꥻ�åȤ���ޤ���
Ϣ³�����ϰϤκǸ�ο��ϡ�ʸ���� \'E0\' ����äƤ��ơ����ͤˤϱƶ�����
���󤬡�����������������˸����Τ��ä����ˤʤ�ޤ���
������ 1 ����礭���ʤ�Τ��ԤĤ��Ȥǡ�������������Ȥ��Ǥ��ޤ���
������ .\|. ��ξ���Υ��ڥ��ɤ���Ū�Ǥ����硢���ڥ��ɤϰ��ۤ�
�����˸��ߤι��ֹ��ɽ�� $. �ѿ�����٤��ޤ���
��:
.nf

.ne 6
������黻�ҤȤ��Ƥ�:
    if (101 .\|. 200) { print; }	# 100�������Ϥ��ޤ�

    next line if (1 .\|. /^$/);	# �إå��Ԥ��ɤ����Ф��ޤ�

    s/^/> / if (/^$/ .\|. eof());	# ���Τ򥯥����Ȥ��ޤ�

.ne 4
����Ȥ��Ƥ�:
    for (101 .\|. 200) { print; }	# $_ �� 100��ɽ�����ޤ�

    @foo = @foo[$[ .\|. $#foo];	# ����ʥΡ����ڥ졼�����
    @foo = @foo[$#foo-4 .\|. $#foo];	# �Ǹ�� 5 ���Ǥ���Ф��ޤ�

.fi
.Ip \-x 8
�ե�����ƥ��ȡ�
����ñ��黻�Ҥϰ�Ĥΰ����Ȥ��ơ��ե�����̾�ޤ��ϥե�����ϥ�ɥ���
�ꡢ���Υե�����ˤĤ��ơ����������Ǥ��뤫�ɤ����򸫤��ΤǤ���
��������ά�����ȡ�$_ ��Ĵ�٤ޤ������㳰�Ȥ��� \-t ��
.IR STDIN
��Ĵ�٤ޤ���
���ξ��� 1 �򡢵��ξ��� \'\' ���֤����ե����뤬¸�ߤ��Ƥ��ʤ����
�ϡ�undefined ���ͤ��֤��ޤ���
ͥ���٤ϡ������ͤ�ط��黻�Ҥ��⤯�ʤ�ޤ��������ѱ黻�Ҥ���㤯�ʤ�
�ޤ���
�黻�Ҥϰʲ����̤�Ǥ�:
.nf
	\-r	�ե������¸� uid/gid ���ɤ߹���롣
	\-w	�ե�����˼¸� uid/gid �ǽ񤭹���롣
	\-x	�ե������¸� uid/gid �Ǽ¹ԤǤ��롣
	\-o	�ե�����ν�ͭ�Ԥ����¸� uid �Ǥ��롣
	\-R	�ե������� uid/gid ���ɤ߹���롣
	\-W	�ե������� uid/gid �ǽ񤭹���롣
	\-X	�ե������� uid/gid �Ǽ¹ԤǤ��롣
	\-O	�ե�����ν�ͭ�Ԥ����� uid �Ǥ��롣
	\-e	�ե����뤬¸�ߤ��롣
	\-z	�ե����륵������ 0 �Ǥ��롣
	\-s	�ե����륵������ 0 �Ǥʤ� (���������֤�) ��
	\-f	�ե�����ϥץ졼��ե�����Ǥ��롣
	\-d	�ե�����ϥǥ��쥯�ȥ�Ǥ��롣
	\-l	�ե�����ϥ���ܥ�å���󥯤Ǥ��롣
	\-p	�ե������̾���դ��ѥ��� (FIFO) �Ǥ��롣
	\-S	�ե�����ϥ����åȤǤ��롣
	\-b	�ե�����ϥ֥��å��ü�ե�����Ǥ��롣
	\-c	�ե�����ϥ���饯���ü�ե�����Ǥ��롣
	\-u	�ե�����ˤ� setuid �ӥåȤ�Ω�äƤ��롣
	\-g	�ե�����ˤ� setgid �ӥåȤ�Ω�äƤ��롣
	\-k	�ե�����ˤ� sticky �ӥåȤ�Ω�äƤ��롣
	\-t	�ե�����ϥ�ɥ뤬 tty �˥����ץ󤵤�Ƥ��롣
	\-T	�ե�����ϥƥ����ȥե�����Ǥ��롣
	\-B	�ե�����ϥХ��ʥ�ե�����Ǥ��� (\-T �ε�) ��
	\-M	������ץȤ򳫻Ϥ��������ǤΥե�����θŤ�(ñ�̤���) ��
	\-A	�������������Ʊ����
	\-C	inode �ѹ������Ʊ����

.fi
�ե�����ѡ��ߥå����黻�� \-r, \-R, \-w, \-W, \-x, \-X �β��ϡ�
ñ�˥ե�����Υ⡼�ɤȥ桼���� uid, gid �˴�Ť��ޤ���
¾����ͳ�ǡ��ºݤ˥ե�������ɤߡ��񤭡��¹Ԥ��Ǥ��ʤ����Ȥ����뤫��
����ޤ���
�ޤ�������Ĥ��ʤ���Фʤ�ʤ��Τϡ������ѥ桼���ˤȤä�
\-r, \-R, \-w, \-W �Ͼ�� 1 ���֤������Υ⡼�ɤǤ����줫�μ¹ԥӥåȤ�
Ω�äƤ���С�\-x, \-X ���� 1 ���֤��Ȥ����Ȥ����Ǥ���
���äơ������ѥ桼�����¹Ԥ��륹����ץȤϡ��ե�����μºݤΥ⡼�ɤ��
��뤿��� stat() ��¹Ԥ����ꡢ���Ū��¾�� uid ��Ω�Ƥ�ɬ�פ����뤫
�⤷��ޤ���
.Sp
��:
.nf
.ne 7
	
	while (<>) {
		chop;
		next unless \-f $_;	# �ü�ե������̵��
		.\|.\|.
	}

.fi
\-s/a/b/ �Ȥ��Ƥ⡢���ꤷ���ִ��򤹤�櫓�ǤϤʤ����Ȥ����դ���
��������
\-exp($foo) �Ȥ���ȡ������̤��ư���ޤ�����\*(-- �ޥ��ʥ��θ夬��ʸ��
�ξ�硢�ե�����ƥ��ȤȲ�ᤵ��ޤ���
.Sp
\-T �� \-B �ϰʲ��Τ褦��ư��ޤ���
�ե��������Ƭ�Υ֥��å�������ˡ��Ѥʥ���ȥ����륳���ɤ�
�᥿����饯���Τ褦�ʡ���������ʸ�����ʤ����ɤ�����Ĵ�٤ޤ���
��������ʸ���� (10%�ʾ�) ���Ĥ���ȡ������ \-B �ե����롢
�Ǥʤ���� \-T �ե�����Ȥʤ�ޤ���
�ǽ�Υ֥��å��˥̥뤬�ޤޤ��ե������Х��ʥ�ե�����Ȥߤʤ���ޤ���
\-T �� \-B ���ե�����ϥ�ɥ�˻Ȥ���ȡ��ǽ�Υ֥��å��ǤϤʤ���
���ΤȤ���ɸ�����ϥХåե���Ĵ�٤��ޤ���
�̥�ե�����(������ 0 �Υե�����)�ξ���ե�����ϥ�ɥ��ƥ��Ȥ��Ƥ���
�����줬 EOF �Ǥ����硢\-T �� \-B �϶��˿����֤��ޤ���
.PP
���٤ƤΥե�����ƥ��� (�� stat �黻��)�ϡ�������饤���� _ ����
�����ü�ե�����ϥ�ɥ��Ϳ������ȡ������ƥॳ�������¸���뤳�Ȥ�
��äơ�����ľ���˹Ԥʤ�줿�ե�����ƥ��� (�ޤ��� stat�黻��) �ǻȤ�
�줿 stat ��¤�Τ��Ȥ��ޤ���
(���� _ ��Ư���� \-t �Ǥ�ư�����lstat �� -l �� stat ��¤�Τ�
�¥ե�����ǤϤʤ�������ܥ�å���󥯤��ͤ�Ĥ����Ȥ�Ф���
�����ʤ���Фʤ�ޤ���)
��:
.nf

	print "Can do.\en" if -r $a || -w _ || -x _;

.ne 9
	stat($filename);
	print "Readable\en" if -r _;
	print "Writable\en" if -w _;
	print "Executable\en" if -x _;
	print "Setuid\en" if -u _;
	print "Setgid\en" if -g _;
	print "Sticky\en" if -k _;
	print "Text\en" if -T _;
	print "Binary\en" if -B _;

.fi
.PP
C �ˤ��äơ�
.I perl
�ˤʤ����:
.Ip "ñ�� &" 12
���ɥ쥹�黻��
.Ip "ñ�� *" 12
"���ɥ쥹���̤��Ƥ�"���ȱ黻��
.Ip "(TYPE)" 12
���Ѵ��黻�ҡ�
.PP
C �Τ褦�ˡ�
.I perl
�ϡ��黻�Ҥؤΰ�����������Ū�ǡ������Ѥ��ʤ�����������ѥ�����ˤ���
���٤μ���ɾ����ԤʤäƤ��ޤ��ޤ���
�äˡ��ѿ��ִ���Ԥʤ�ʤ���ƥ��֤Ǥ�ʸ����η��ϡ�����ѥ������
�Ԥʤ��ޤ���
�Хå�����å���β��⥳��ѥ�����˵�����ޤ���
.nf

.ne 2
	\'Now is the time for all\' . "\|\e\|n" .
	\'good men to come to.\'

.fi
����������������Ǥϰ�Ĥ�ʸ����ˤ���Ƥ��ޤ��ޤ���
.PP
++ �黻�ҤˤϤ���äȳ�ĥ�����ٹ����ܤ���Ƥ��ޤ���
�����ѿ�����ͥ���ƥ����ȤȤ��ƻȤ�줿�ѿ��򥤥󥯥���Ȥ���ȡ���
��Υ��󥯥���Ȥˤʤ�ޤ������ѿ����̥�Ǥʤ�ʸ������ƥ����ȤȤ���
�����Ȥ�����Ƥ��ơ��ѥ����� /^[a\-zA\-Z]*[0\-9]*$/ �˥ޥå�������ϡ�
��ʸ�����ϰϤ򥭥�꡼�դ�����¸����ʸ���Ȥ��ƥ��󥯥���Ȥ���ޤ�:
.nf

	print ++($foo = \'99\');	# prints \*(L'100\*(R'
	print ++($foo = \'a0\');	# prints \*(L'a1\*(R'
	print ++($foo = \'Az\');	# prints \*(L'Ba\*(R'
	print ++($foo = \'zz\');	# prints \*(L'aaa\*(R'

.fi
-- �黻�Ҥˤϡ����Τ褦�ʺٹ��Ϥ���ޤ���
.PP
(����Υ���ƥ����Ȥˤ�����) �ϰϱ黻�Ҥϡ������ͤȺǾ��ͤ�ʸ�����
���ˡ��ٹ�������ư���󥯥���ȥ��르�ꥺ���Ȥ��ޤ���
���٤ƤΥ���ե��٥å�ʸ��������ˤϡ�

	@alphabet = (\'A\' .. \'Z\');

16 �ʿ�������ˤϡ�

	$hexdigit = (0 .. 9, \'a\' .. \'f\')[$num & 15];

�Ϥ�� 0 ���դ������դ�����ˤϡ�

	@z2 = (\'01\' .. \'31\');  print @z2[$mday];

�Ƚ񤱤ޤ���
(�Ǹ�˻��ꤵ�줿�ͤ����ٹ��������󥯥���Ȥ��������륷�������󥹤�
�ޤޤ�Ƥ��ʤ���硢�����ͤ��Ǹ�˻��ꤵ�줿�ͤ��Ĺ���ʤ�ޤǥ�������
�󥹤�³���ޤ���)
.PP
|| �� && �ϡ�0 �� 1 ���֤� C �Τ���Ȥϰ�äơ��Ǹ��ɾ�����줿�ͤ�
�֤��ޤ���
�����顢�ۡ���ǥ��쥯�ȥ��ߤĤ���ܿ����ι⤤��ˡ�ϡ������ʤ�ޤ���
.nf

	$home = $ENV{'HOME'} || $ENV{'LOGDIR'} ||
	    (getpwuid($<))[7] || die "You're homeless!\en";

.fi
.PP
���ҤΥ�ƥ����ѿ��˹�碌���ʹߤ������������黻��
����ǹ�Ȥ��ƻȤ��ޤ���
�����α黻�δ��Ĥ��ϡ�������*�ꥹ��*����ޤ���
�ꥹ�Ȥϡ�������������ͤ���ʤ�ޤ���
�����ͤ��ꥹ�Ȥ���ˤ���ȡ����ξ����������줿�褦�˸ġ����ͤ��ꥹ��
����˴ޤޤ�ơ�Ĺ���켡�������ͤ��뤳�Ȥˤʤ�ޤ���
*�ꥹ��* �����Ǥϥ���ޤǶ��ڤ��Ƥ��ʤ���Фʤ�ޤ���
�������̤ǰϤ�Ǥ�Ϥޤʤ��Ƥ⡢�黻��ꥹ�Ƚ���ޤ���
����ϴؿ��ƤӽФ���Ʊ��ñ��黻�ҤȤ��ơ�
�黻��Ȥ����Ȥ��Ǥ��뤳�Ȥ��̣���ޤ���
�ؿ��ƤӽФ��Ȥ��ƻȤ��ˤϡ�Ʊ���Ԥμ��Υȡ�����Ϻ���̤Ǥʤ���Фʤ�
�ޤ���
(���򤬴֤ˤϤ��ޤäƤ⤫�ޤ��ޤ���)
���Τ褦�ʴؿ��ϡ�ͽ�ۤ�����̤��ͥ��Ȥʤ�ޤ���
����̤���äƤ��ʤ��ȡ�����³���Ȥ���С������ñ��黻�Ҥǡ��ꥹ��
�黻�Ҥ��ɤ����ˤ�äơ�ͥ���٤���ޤ�ޤ���
�ꥹ�ȱ黻�ҤϺǤ�ͥ���٤��㤯�ʤ�ޤ���
���٤Ƥ�ñ��黻�Ҥϡ��ط��黻�Ҥ���ͥ�褵��ޤ��������ѱ黻�Ҥ���
ͥ���٤��㤯�ʤ�ޤ���
ͥ���٤Υ��������򻲾Ȥ��Ʋ�������
.PP
�����������Υ���ƥ����ȤǻȤ���黻�Ҥξ�硢���Ԥ���Ȱ��̤ˡ�
�����饳��ƥ����ȤǤ� undefined �ͤ��֤�������Υ���ƥ����ȤǤ�
�̥�ꥹ�Ȥ��֤��ޤ���
��������*�ꥹ�Ȥ򥹥�����Ѵ��������Ū�ʵ�§�Ϥʤ�* �Ȥ������Ȥ�
˺��ʤ��Dz�������
���줾��α黻�Ҥϡ��ɤμ�Υ�������֤��Τ��Ǥ�Ŭ���Ǥ��뤫����ޤ���
����黻�Ҥϡ�����Υ���ƥ����ȤȤ����֤����褦�ʥꥹ�Ȥ�Ĺ�����֤�
�ޤ����ꥹ�Ȥκǽ���ͤ��֤��黻�ҡ��ꥹ�ȤκǸ���ͤ��֤��黻�ҡ�
������������������֤��黻�Ҥʤɤ⤢��ޤ���
���̤ˡ����������ʤ���С��黻�Ҥϵ����Τ��֤��ޤ���
.Ip "/PATTERN/" 8 4
m/PATTERN/ �򻲾Ȥ��Ʋ�������
.Ip "?PATTERN?" 8 4
����ϡ�
.I reset
�黻�ҸƤӽФ��δ֤ǰ�󤷤��ޥå����ʤ����Ȥ�����С�
/pattern/ ����������Ʊ���Ǥ���
������㤨�С��췲�Υե��������ǡ��ƥե�����˺ǽ�˲������и����뤳��
�򸫤����Ȥ��������ʺ�Ŭ���Ǥ���
���ΤȤ��Υѥå������˥�������� ?? �ѥ���������ϡ��ꥻ�åȤ���ޤ���
.Ip "accept(NEWSOCKET,GENERICSOCKET)" 8 2
accept �����ƥॳ�����Ʊ�����Ȥ򤷤ޤ���
��������ȿ��򡢼��Ԥ���ȵ����֤��ޤ���
�ץ��������̿��Υ�����������򻲾Ȥ��Ʋ�������
.Ip "alarm(SECONDS)" 8 4
.Ip "alarm SECONDS" 8
���ꤷ���ÿ� (�ºݤˤϡ�1 ����������) ���вᤷ�����ȡ���ʬ��
�ץ������� SIGALRM �������ޤ���
�Ĥޤꡢalarm(15) �ʤ顢14 �ðʾ�Фä���������� SIGALRM �������ޤ���
���٤˰�ĤΥ����ޤ���������Ȥ���ޤ��󡣸ƤӽФ������ˤ��������
�����ޤ�̵���Ȥʤꡢ���� 0 �ǸƤӽФ��Ȱ����Υ����ޤ򥭥�󥻥뤷
�ơ������������ޤϻ�ư���ޤ���
����ͤϡ�ľ���Υ����ޤλĤ���֤Ǥ���
.Ip "atan2(Y,X)" 8 2
Y/X �� ���������󥸥���� ��
.if t \-\(*p ���� \(*p.
.if n \-�� ���� ��
���ϰϤ��֤��ޤ���
.Ip "bind(SOCKET,NAME)" 8 2
bind �����ƥॳ�����Ʊ�����Ȥ򤷤ޤ���
��������п��򡢼��Ԥ���е����֤��ޤ���
NAME �ϡ������åȤ˹�ä�Ŭ�ڤʷ��� pack ���줿���ɥ쥹�Ǥʤ���Фʤ�ޤ���
�ץ��������̿��Υ�����������򻲾Ȥ��Ʋ�������
.Ip "binmode(FILEHANDLE)" 8 4
.Ip "binmode FILEHANDLE" 8 4
�Х��ʥ�ե�����ȥƥ����ȥե��������̤��륪�ڥ졼�ƥ��󥰥����ƥ��
�ǡ����Υե������ \*(L"�Х��ʥ�\*(R" �Ȥ����ɤ߹��ޤ��褦�ˤ��ޤ���
�Х��ʥ�⡼�ɤ��ɤ߹��ޤ�ʤ��ե�����ϡ�CR LF �����ϻ��� LF ���Ѵ�
���졢���ϻ��ˤϡ�LF �� CR LF ���Ѵ�����ޤ���
binmode �ϡ�UNIX �Ǥ�̵���Ǥ���
FILEHANDLE �����ΤȤ��ϡ��ͤ��ե�����ϥ�ɥ��̾���Ȥ��ư����ޤ���
.Ip "caller(EXPR)"
.Ip "caller"
���ߤΥ��֥롼����ƤӽФ��Υ���ƥ����Ȥ��֤��ޤ�:
.nf

	($package,$filename,$line) = caller;

.fi
EXPR������ȡ��ǥХå��������å��ȥ졼���˽��Ϥ��ƻȤ���ĥ�����
�֤��ޤ���
EXPR���ͤϡ����ߤΥ��֥롼��������ˤ����Ĥ� call �ե졼�ब���뤫��
�����ޤ���
.Ip "chdir(EXPR)" 8 2
.Ip "chdir EXPR" 8 2
ư��Ƥ���ǥ��쥯�ȥ�򡢤⤷�Ǥ���ʤ� EXPR ���ѹ����ޤ���
EXPR����ά�����ȡ��ۡ���ǥ��쥯�ȥ�ˤʤ�ޤ���
��������� 1 �򡢼��Ԥ���� 0 ���֤��ޤ���
.IR die
����򻲾Ȥ��Ʋ�������
.Ip "chmod(LIST)" 8 2
.Ip "chmod LIST" 8 2
�ե�����Υꥹ�ȤΥѡ��ߥå������ѹ����ޤ���
�ꥹ�Ȥκǽ�����Ǥϡ����ͥ⡼�ɤǤʤ���Фʤ�ޤ���
���������ե�����ο����֤��ޤ���
.nf

.ne 2
	$cnt = chmod 0755, \'foo\', \'bar\';
	chmod 0755, @executables;

.fi
.Ip "chop(LIST)" 8 7
.Ip "chop(VARIABLE)" 8
.Ip "chop VARIABLE" 8
.Ip "chop" 8
ʸ����κǸ��ʸ�����ꡢ���줿ʸ�����֤��ޤ���
����Ū�ˤϡ����Ϥ��줿�쥳���ɤν��꤫�����ʸ�����������˻Ȥ��ޤ�
����ʸ����Υ��ԡ��򥹥���󤹤�櫓�ǤϤʤ��Τǡ�s/\en// ���
��ΨŪ�Ǥ���
VARIABLE ���ά����ȡ�$_ �� chop ���ޤ���
��:
.nf

.ne 5
	while (<>) {
		chop;	# �Ǹ�Υե�����ɤ� \en �����
		@array = split(/:/);
		.\|.\|.
	}

.fi
�ºݤˤϡ�������ޤຸ���ͤΤ����ʤ��Τ� chop �Ǥ��ޤ���
.nf

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

.fi
�ꥹ�Ȥ� chop ����Ȥ��٤Ƥ����Ǥ� chop ���졢
�Ǹ�� chop ���줿�ͤ��֤���ޤ���
.Ip "chown(LIST)" 8 2
.Ip "chown LIST" 8 2
�ե�����Υꥹ�Ȥν�ͭ�� (�Ƚ�ͭ���롼��) ���Ѥ��ޤ���
�ꥹ�Ȥκǽ����Ĥ����ǤϿ��ͤ�ɽ���� uid �� gid �����ν�ǻ��ꤵ��
�ʤ���Фʤ�ޤ���
�ѹ������������ե�����ο����֤��ޤ���
.nf

.ne 2
	$cnt = chown $uid, $gid, \'foo\', \'bar\';
	chown $uid, $gid, @filenames;

.fi
.ne 23
�ʲ��ϡ�passwd �ե����뤫����ͤǤʤ� uid �򸡺�������Ǥ�:
.nf

	print "User: ";
	$user = <STDIN>;
	chop($user);
	print "Files: "
	$pattern = <STDIN>;
	chop($pattern);
.ie t \{\
	open(pass, \'/etc/passwd\') || die "Can't open passwd: $!\en";
'br\}
.el \{\
	open(pass, \'/etc/passwd\')
		|| die "Can't open passwd: $!\en";
'br\}
	while (<pass>) {
		($login,$pass,$uid,$gid) = split(/:/);
		$uid{$login} = $uid;
		$gid{$login} = $gid;
	}
	@ary = <${pattern}>;	# �ե���������ޤ�
	if ($uid{$user} eq \'\') {
		die "$user not in passwd file";
	}
	else {
		chown $uid{$user}, $gid{$user}, @ary;
	}

.fi
.Ip "chroot(FILENAME)" 8 5
.Ip "chroot FILENAME" 8
Ʊ̾�Υ����ƥॳ�����Ʊ�����Ȥ򤷤ޤ���
���줬���򤹤�Τ��Τ�ʤ��Ȥ��Ƥ⡢���ˤ��ʤ��Dz�������
FILENAME ���ά����ȡ�$_ �� chroot ���ޤ���
.Ip "close(FILEHANDLE)" 8 5
.Ip "close FILEHANDLE" 8
�ե�����ϥ�ɥ�˷�ӤĤ���줿�ե������ѥ��פ򥯥��������ޤ���
�̤Υե�����򥪡��ץ󤷤褦�Ȥ��Ƥ�����ϡ�FILEHANDLE ���Ĥ���
ɬ�פ�����ޤ��󡣥����ץ󤷤��ݤ����Υե�����򥯥��������Ƥ����
����Ǥ���
(
.IR open
�򻲾Ȥ��Ʋ�����)
������������Ū�����ϥե�����Υ��������򤹤�ȹԥ����� ($.) ��
�ꥻ�åȤ����Τ��Ф���
.I open
�ΤȤ��˹Ԥʤ�����ۤΥ��������Ǥϡ��ꥻ�åȤ���ޤ���
�ޤ�����ǥѥ��פν��Ϥ򸫤������ϡ��ѥ��פ򥯥���������ȥѥ��פ�
��ư���줿�ץ������δ�λ���Ԥ��ޤ���
�ѥ��פ�����Ū�˥�����������ȡ����ޥ�ɾ��������ͤ� $? ��
������ޤ���
��:
.nf

.ne 4
	open(OUTPUT, \'|sort >foo\');	# sort �إѥ���
	.\|.\|.	# print stuff to output
	close OUTPUT;		# sort �ν�λ���Ԥ��ޤ�
	open(INPUT, \'foo\');	# sort�η�̤����ޤ�

.fi
FILEHANDLE �ϼºݤΥե�����ϥ�ɥ�̾��Ϳ���뼰�Ǥ⤫�ޤ��ޤ���
.Ip "closedir(DIRHANDLE)" 8 5
.Ip "closedir DIRHANDLE" 8
opendir() �ǥ����ץ󤵤줿�ǥ��쥯�ȥ�򥯥��������ޤ���
.Ip "connect(SOCKET,NAME)" 8 2
connect �����ƥॳ�����Ʊ�����Ȥ򤷤ޤ���
��������ȿ��򡢼��Ԥ���ȵ����֤��ޤ���
NAME �ϥ����åȤ˹�ä�Ŭ���ʷ��Υѥå��������ɥ쥹�Ǥʤ����
�ʤ�ޤ���
�ץ��������̿��Υ�����������򻲾Ȥ��Ʋ�������
.Ip "cos(EXPR)" 8 6
.Ip "cos EXPR" 8 6
EXPR (�饸�����ɽ��) �Υ���������֤��ޤ���
EXPR ���ά����� $_ �Υ����������ޤ���
.Ip "crypt(PLAINTEXT,SALT)" 8 6
C �饤�֥��� crypt() �ؿ������Τ�Ʊ���褦�� encrypt ���줿ʸ����
���֤��ޤ���
�ѥ���ɥե������Ĵ�٤ơ�����ʥѥ���ɤ򸫤Ĥ���Τ������Ǥ���
��˹�Ҥ򤫤֤äƤ����ۤ���������򤷤ʤ���Фʤ�ޤ���
.Ip "dbmclose(ASSOC_ARRAY)" 8 6
.Ip "dbmclose ASSOC_ARRAY" 8
dbm �ե������Ϣ������η���դ��������ޤ���
Ϣ������˻ĤäƤ����ͤϡ�dbm �ե�����Υ���å���˲������äƤ��뤫
���Τꤿ���ΤǤʤ���С���̣���ʤ���ΤȤʤ�ޤ���
���δؿ��ϡ�ndbm ��Ȥ����ˤΤ�ͭ�ѤǤ���
.Ip "dbmopen(ASSOC,DBNAME,MODE)" 8 6
dbm �� ndbm �ե������Ϣ����������դ��ޤ���
ASSOC ��Ϣ�������̾���Ǥ���
(�̾�� open �Ȱ�äơ��ǽ�ΰ����ϥե�����ϥ�ɥ�Τ褦�˸����Ƥ⡢
�ե�����ϥ�ɥ�Ǥ�*����ޤ���*) ��
DBNAME �ϡ�(.dir �� .pag �γ�ĥ�Ҥ������) �ǡ����١�����̾���Ǥ���
�ǡ����١�����¸�ߤ��ʤ��ȡ�(umask�ǽ������줿) MODE �ǻ��ꤵ�줿
�ץ��ƥ������Ǻ������ޤ���
�Ť� dbm �ؿ��������ݡ��Ȥ��ʤ������ƥ�Ǥϡ��ץ���������ǰ�Ĥ� 
dbmopen ����������ʤ����⤷��ޤ���
dbm �� ndbm ��ʤ������ƥ�Ǥϡ�dbmopen �ƤӽФ�����̿Ū�ʥ��顼����
���ޤ���
.Sp
����ޤǤ� dbmopen �Ǵ�Ϣ�դ���줿Ϣ��������ͤϼ����ޤ���
dbm �ե�����Τ����������̤��ͤϥ���˥���å��夵��ޤ���
�ǥե���ȤǤ����̤� 64 �Ǥ�����dbmopen ������Ϣ�������
�����٥å�����ȥ�ο��򤢤餫������ݤ��Ƥ������Ȥǡ�
���䤹���Ȥ��Ǥ��ޤ���ɬ�פʤ顢reset ���ޥ�ɤǥ���å����
�ե�å��夹�뤳�Ȥ��Ǥ��ޤ���
.Sp
dbm �ե�����ؤν񤭹��ߵ��Ĥ���äƤ��ʤ���硢Ϣ�������ѿ���
�ɤ߽Ф������ǡ�����򥻥åȤ��뤳�ȤϤǤ��ޤ���
�񤭹���뤫�ɤ�����ƥ��Ȥ�������С��ե�����ƥ��Ȥ�Ȥ��������顼��
�ȥ�åפǤ��� eval ����ǡ����ߡ������󥨥�ȥ�򥻥åȤ��褦��
���ƤߤƲ�������
.Sp
keys() �� valuse() �Τ褦�ʴؿ��ϡ��礭�� dbm �ե������Ȥä��Ȥ��ˡ�
����������ͤ��֤����⤷��ޤ���
�礭�� dbm �ե�����Ƿ����֤��򤹤�Ȥ��ϡ�each() �ؿ���Ȥä�����
�ɤ����⤷��ޤ���
��:
.nf

.ne 6
	# ����ե�����Υ��ե��åȤ�ɽ�����ޤ�
	dbmopen(HIST,'/usr/lib/news/history',0666);
	while (($key,$val) = each %HIST) {
		print $key, ' = ', unpack('L',$val), "\en";
	}
	dbmclose(HIST);

.fi
.Ip "defined(EXPR)" 8 6
.Ip "defined EXPR" 8
������ EXPR �����ºݤ��ͤ���äƤ��뤫�ɤ�����ɽ�������ͤ��֤��ޤ���
¿���α黻�ǡ��ե����뽪ü�����������Ƥ��ʤ��ѿ��������ƥ२�顼�ʤ�
���㳰�������� undefined �ͤ��֤���ޤ���
���δؿ��ϡ������Υ̥�ʸ������֤����⤷��ʤ����ä��������Ǥ򻲾�
�������κݤˡ�̤����Υ̥�ʸ�����������줿�̥�ʸ�����Ƚ�̤��ǽ��
���ޤ���
����䥵�֥롼����¸�ߤ��뤫�ɤ�����Ĵ�٤뤳�Ȥ�Ǥ��ޤ���
ͽ��Ѥ��ѿ���Ȥ��Ȥ��ϡ�ľ��Ū�˴��Ԥ���褦�ʷ�̤ˤʤ�Ȥ��ݾڤ����
���ޤ���
��:
.nf

.ne 7
	print if defined $switch{'D'};
	print "$val\en" while defined($val = pop(@ary));
	die "Can't readlink $sym: $!"
		unless defined($value = readlink $sym);
	eval '@foo = ()' if defined(@foo);
	die "No XYZ package defined" unless defined %_XYZ;
	sub foo { defined &$bar ? &$bar(@_) : die "No bar"; }

.fi
undef �⻲�Ȥ��Ʋ�������
.Ip "delete $ASSOC{KEY}" 8 6
���ꤷ��Ϣ�����󤫤顢���ꤷ���ͤ������ޤ���
������줿�ͤ��֤�ޤ���������������ʤ��ä����� undefined �ͤ�
�֤�ޤ���
$ENV{} ����������ȡ��Ķ��ѿ����ѹ����ޤ���
dbm �ե�����˷�ӤĤ���줿�����������ȡ�dbm �ե����뤫�餽�ι�
�ܤ������ޤ���
.Sp
�ʲ�����ϡ�Ϣ������Τ��٤Ƥ��ͤ������ޤ�:
.nf

.ne 3
	foreach $key (keys %ARRAY) {
		delete $ARRAY{$key};
	}

.fi
(��������
.I reset
���ޥ�ɤ�Ȥä�����®���Ǥ��礦��undef %ARRAY �ʤ��ä�®���Ǥ��礦)
.Ip "die(LIST)" 8
.Ip "die LIST" 8
eval �γ��ǡ�LIST ���ͤ�
.I STDERR
��ɽ�����ơ����ΤȤ��� $! (errno) ���ͤǽ�λ (exit) ���ޤ���
$! �� 0 �ʤ顢($? >> 8) (\`command\` �Υ��ơ�����) ���ͤǽ�λ���ޤ���
($? >> 8) �� 0 �ʤ顢255 �ǽ�λ���ޤ���
eval ����Ǥϡ����顼��å������� $@ �˵ͤ���ޤ졢eval �� undefined 
�ͤǽ�λ���ޤ���
.Sp
Ʊ������:
.nf

.ne 3
.ie t \{\
	die "Can't cd to spool: $!\en" unless chdir \'/usr/spool/news\';
'br\}
.el \{\
	die "Can't cd to spool: $!\en"
		unless chdir \'/usr/spool/news\';
'br\}

	chdir \'/usr/spool/news\' || die "Can't cd to spool: $!\en" 

.fi
.Sp
EXPR ���ͤ����Ԥǽ���ʤ���硢������ץȤθ��ߤι��ֹ�� (�⤷�����) 
���Ϲ��ֹ椬���Ϥ��졢���Ԥ��ä����ޤ���
�ҥ��: \*(L", stopped\*(R" ���å������˲ä��Ƥ����ȡ�
\*(L"at foo line 123\*(R" ���ä���줿�Ȥ��ˤ狼��פ��ʤ�Τ��ɤ�
�Ǥ��礦��
������ץ� \*(L"canasta\*(R" �����餻�Ƥ���Ȥ���ȡ�
.nf

.ne 7
	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.

.fi
�Ƚ��Ϥ���ޤ���
.IR exit
�򻲾Ȥ��Ʋ�������
.Ip "do BLOCK" 8 4
BLOCK ��ǻ��ꤵ�줿�������Ǹ�Υ��ޥ�ɤ��ͤ��֤��ޤ���
�롼�׽����Ҥ˽������줿�Ȥ��ϡ��롼�׾���ƥ��Ȥ������� BLOCK ��
���ټ¹Ԥ���ޤ���
(¾��ʸ�Ǥϡ��롼�׽����Ҥϡ�����Ϥ�˥ƥ��Ȥ��ޤ���)
.Ip "do SUBROUTINE (LIST)" 8 3
.I sub
��������줿���֥롼�����¹Ԥ���SUBROUTINE �ǺǸ��ɾ�����줿������
���֤��ޤ���
����̾���Υ��֥롼���󤬤ʤ���硢��̿Ū���顼�������ޤ���
(���֥롼����¸�ߤ��Ƥ��뤫�ɤ�����Ƚ�ꤷ�����ʤ顢\*(L"defined\*(R" 
�黻�Ҥ�Ȥ��Τ��ɤ��Ǥ��礦��)
�����ꥹ�Ȥΰ����Ȥ����Ϥ������ʤ顢����������������Ĺ�����դ���
�Ϥ��Τ��ɤ��Ǥ��礦��
(��˽ФƤ��륵�֥롼����Υ��������򻲾Ȥ��Ʋ�������)
\*(L"do EXPR\*(R" �η��Ȥκ�����򤱤뤿�ᡢ��̤�ɬ�פȤʤ�ޤ���
.Sp
SUBROUTINE �ϡ���ĤΥ������ѿ��Ǥ⤫�ޤ��ޤ��󡣤��ξ�硢
�¹Ԥ���륵�֥롼����̾�ϡ��ѿ����������ޤ���
.Sp
�̤� (���ޤ��) ���Ȥ��ơ�����ѥ���� & �������դ��� &foo(@args) ��
�褦�ˡ����֥롼�����Ƥ�Ǥ⤫�ޤ��ޤ���
�������Ϥ��ʤ��ʤ顢��̤�Ȥ�ɬ�פϤ���ޤ���
��̤��ά����ȡ����֥롼����ˤ� @_ ������Ϥ���ޤ���
& ���ϡ�defined �� undef �黻�Ҥ˥��֥롼�����ؼ�����Τˤ�
�Ȥ��ޤ�:
.nf

	if (defined &$var) { &$var($parm); undef &$var; }

.fi
.Ip "do EXPR" 8 3
�ե�����̾�Ȥ��� EXPR ���ͤ�Ȥ���
.I perl
������ץȤȤ��ơ��ե���������Ƥ�¹Ԥ��ޤ���
����ϴ���Ū��
.I perl
���֥롼����饤�֥�꤫�饵�֥롼����򥤥󥯥롼�ɤ���Ȥ����Ȥ�����
���ޤ���
.nf

	do \'stat.pl\';

�ϡ�

	eval \`cat stat.pl\`;

.fi
�ȤۤȤ��Ʊ���Ǥ���
�㤦�Τϡ�����ΨŪ�ǡ����ʷ�ǡ����顼��å�������θ��ߥե�����̾
���������������ȥǥ��쥯�ȥ�� stat.pl ���ʤ����
.B \-I
�ǻ��ꤵ�줿�饤�֥��򤹤٤�õ���Ȥ������ȤǤ���
(ͽ���ѿ��Υ����������� @INC ����򻲾Ȥ��Ʋ�����) ��
���������ƤӽФ��Τ��Ӥ˥ե��������Ϥ�ľ���Τ�Ʊ���ʤΤǡ��롼�פ�
��¦�Ǥ��Υե������Ȥ��ʤ顢��ư���֤Ͼ���;�פˤ�����Ȥ��Ƥ⡢
\-P �� #include ��Ȥä������ɤ��Ǥ��礦��
(���� #include ��Ȥ��������ϡ�cpp �� # �����Ȥ�ǧ�����Ƥ���ʤ�
���ȤǤ���\*(--ƨ��ƻ�ϡ�������ñ�ȤȤ��� \*(L";#\*(R" ��Ȥ����ȤǤ���)
���Τ�Τ������ǤϤʤ����Ȥ����դ��Ʋ�����:
.nf

.ne 2
	do $foo;	# �ե������ eval ���ޤ�
	do $foo();	# ���֥롼�����ƤӤޤ�

.fi
�饤�֥��롼����Υ��󥯥롼�ɤȤ��Ƥϡ�
\*(L"require\*(R" �黻�Ҥ���������ɤ����Ȥ�Ф��Ƥ����Ʋ�������
.Ip "dump LABEL" 8 6
�������˥�������פ��ޤ���
��Ȥ�ȡ�����ϡ��ץ������λϤ�ˤ��٤Ƥ��ѿ��������������
����פ��줿������ undump �ץ�������ȤäƼ¹ԥХ��ʥ���뤿���
����ޤ���
�������Х��ʥ꤬�¹Ԥ����Ȥ���"goto LABEL" ��¹Ԥ��뤳�Ȥ���
�Ϥޤ�ޤ�
(goto �������뤹�٤Ƥ����¤�Ŭ�Ѥ���ޤ�) ��
��������פǻߤޤä��Ȥ������顢goto �ǺƤӻϤޤ�ȹͤ�����ɤ��Ǥ���
LABEL ����ά�����ȡ��ץ���������Ƭ����ƥ������Ȥ��ޤ���
�ٹ�: ����פ��줿�Ȥ��� open ����Ƥ����ɤΥե�����⡢�ץ�����ब
���������Ȥ��ˤϤ⤦ open ����Ƥ��餺��perl��¦�ǤϺ��𤹤��ǽ����
����ޤ���
\-u �⻲�Ȥ��Ʋ�������
.Sp
��:
.nf

.ne 16
	#!/usr/bin/perl
	require 'getopt.pl';
	require 'stat.pl';
	%days = (
	    'Sun',1,
	    'Mon',2,
	    'Tue',3,
	    'Wed',4,
	    'Thu',5,
	    'Fri',6,
	    'Sat',7);

	dump QUICKSTART if $ARGV[0] eq '-d';

    QUICKSTART:
	do Getopt('f');

.fi
.Ip "each(ASSOC_ARRAY)" 8 6
.Ip "each ASSOC_ARRAY" 8
Ϣ������μ��Υ������ͤ� 2 �Ĥ����Ǥ������������缡�֤���
����򷫤��֤����Ȥ��Ǥ��ޤ���
�ƥ���ȥ�ϥ�����Τ褦�˸����������֤���ޤ���
�����������ɤ߹��ޤ줿�Ȥ����̥����� (���������� FALSE(0) �ͤȤʤ�)
���֤���ޤ���
���θ塢���� each() �θƤӽФ��Ƿ����֤���ƤӻϤ�ޤ���
�����֤�����ϡ����󤫤餹�٤Ƥ����Ǥ��ɤ߹��ळ�Ȥˤ�äƤΤ�
�ꥻ�åȤǤ��ޤ���
�����֤��δ֤ϡ�������ѹ����ƤϤ����ޤ���
��Ϣ������ˤĤ���Ĥ��ķ����֤����󤬤��ꡢ�ץ��������Τ��٤Ƥ�
each(), keys(), values() �ؿ��ƤӽФ��Ƕ�ͭ����ޤ���
������ϡ�����ϰۤʤ��Τ� printenv �ץ������Τ褦�˴Ķ��ѿ���
ɽ�����ޤ�:
.nf

.ne 3
	while (($key,$value) = each %ENV) {
		print "$key=$value\en";
	}

.fi
keys() �ؿ��� values() �ؿ��⻲�Ȥ��Ʋ�������
.Ip "eof(FILEHANDLE)" 8 8
.Ip "eof()" 8
.Ip "eof" 8
���� FILEHANDLE ���ɤ���Ȥ��ե����뽪ü�Ǥ��뤫��
�ޤ��� FILEHANDLE �������ץ󤵤�Ƥ��ʤ��Ȥ���1 ���֤��ޤ���
FILEHANDLE �ϼºݤΥե�����ϥ�ɥ�̾���ͤ˻��ļ��Ǥ⤫�ޤ��ޤ���
(���δؿ��ϡ��ºݤˤϰ�ʸ���ɤ߹���Ǥϡ�ungetc ����Τǡ�����Ū��
����ƥ����ȤǤϤ���ۤ�ͭ�ѤǤϤ���ޤ���)
����̵���� eof �ϡ��Ǹ���ɤ���ե������ eof ���֤��֤��ޤ���
���γ�� () �ϡ����ޥ�ɥ饤��ǻ��ꤵ�줿�ե����뷲����ʤ�
�����ե������ؤ��ޤ����Ĥޤꡢeof() �� while (<>) ����¦�ǺǸ��
�ե�����ν�ü�򸡽Ф���Ȥ��˰�̣������ޤ���
while (<>) �롼�פ���dzƥե������Ĵ�٤����Ȥ��ϡ�eof(ARGV) �ޤ���
��̤Τʤ� eof ��ȤäƲ�������
��:
.nf

.ne 7
	# �Ǹ�Υե�����κǽ��Ԥ�ľ���˥��å�����������ޤ�
	while (<>) {
		if (eof()) {
			print "\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\|\-\en";
		}
		print;
	}

.ne 7
	# �����ϥե�������ˡ����ֹ��ꥻ�åȤ��ޤ�
	while (<>) {
		print "$.\et$_";
		if (eof) {	# Not eof().
			close(ARGV);
		}
	}

.fi
.Ip "eval(EXPR)" 8 6
.Ip "eval EXPR" 8 6
.Ip "eval BLOCK" 8 6
EXPR �ϲ��Ϥ��졢��Ĥξ�����
.I perl
�ץ������Ǥ��뤫�Τ褦�˼¹Ԥ���ޤ���
.I perl
�ץ������Υ���ƥ����Ȥ���Ǽ¹Ԥ����Τǡ��ɤ��ѿ����ꡢ
���֥롼���󡢥ե����ޥå�����⤽�θ�˻Ĥ�ޤ���
����ͤϡ����٥��֥롼�����Ʊ�ͤˡ��Ǹ��ɾ�����줿�����֤�ޤ���
ʸˡ���顼��¹Ի����顼�����뤫��die ʸ������С�eval �ˤ�� undefined 
���֤ꡢ$@ �˥��顼��å����������åȤ���ޤ���
�⤷���顼���ʤ���С�$@ �ϥ̥�ʸ����Ǥ��뤳�Ȥ��ݾڤ���ޤ���
EXPR���ά����ȡ�$_ ��ɾ�����ޤ���
�Ǹ�Υ��ߥ�����Ϥɤ�⼰���������ޤ���
.Sp
eval �Ϥ���������̿Ū���顼�ޤǥȥ�åפ���Τǡ�
(dbmopen �� symlink�Τ褦��) ���뵡ǽ����������Ƥ��뤫�ɤ�����
����ˤ������ʤ��Ȥ�Ф��Ƥ����Ʋ�������
die �黻�Ҥ��㳰�򵯤����褦�˻Ȥ���Τϡ�perl ���㳰�ȥ�å׵���
�Ǥ⤢��ޤ���
.Sp
�¹Ԥ���륳���ɤ��Ѥ��ʤ��ʤ顢�����٤˺ƥ���ѥ��뤵�����֤�
�񤹤��ϡ��¹Ի����顼��ȥ�åפ��� eval-BLOCK �η���Ȥä������ɤ�
���⤷��ޤ���
�ɤ�ʥ��顼�ⵯ����� $@ �˥�å��������֤�ޤ���
EXPR �Τ褦�ʡ����󥰥륯�����Ȥ��줿ʸ�����ɾ������ȡ�Ʊ�����̤�
����ޤ�����eval-BLOCK �η��Ǥϥ���ѥ������ʸˡ���顼����𤹤�Τ�
�Ф���eval-EXPR �η��Ǥ� $@ ���̤��Ƽ¹Ի���ʸˡ���顼����𤹤�����
�ۤʤ�ޤ���
eval-EXPR �η��ϡ��ǽ�����������Ȥ��� eval-BLOCK �˺�Ŭ������ޤ���
(e �����Ҥ�Ȥä���硢�ִ������¦�ϥ��󥰥륯�����Ȥ��줿ʸ�����
�ߤʤ��졢Ʊ����Ŭ����������ޤ���)
��:
.nf

.ne 11
	# 0 ��������̿Ū���顼�ˤ��ޤ���
	eval { $answer = $a / $b; }; warn $@ if $@;

	# �����Ѹ塢Ʊ����Τ˺�Ŭ������ޤ���
	eval '$answer = $a / $b'; warn $@ if $@;

	# ����ѥ�������顼
	eval { $answer = };

	# �¹Ի����顼
	eval '$answer =';	# sets $@

.fi
.Ip "exec(LIST)" 8 8
.Ip "exec LIST" 8 6
LIST ����˰�İʾ�ΰ��������뤫��LIST ����İʾ���ͤ��������ʤ�С�
�ꥹ�Ȥΰ������դ��� execvp() ��ƤӤޤ���
��ĤΥ�������������ʤ顢�����˥�����Υ᥿����饯�������뤫�ɤ���
��Ĵ�٤ޤ�������С����ϤΤ���˰�����ݤ��� \*(L"/bin/sh \-c\*(R" ��
�Ϥ���̵����С�������ñ��� split ���졢execvp() ��ľ���Ϥ���ޤ���
����������Ψ���ɤ�����Ǥ���
����: exec (�� system) �Ͻ��ϥХåե���ե�å��夷�ʤ��Τǡ����Ϥ�
������Τ��򤱤뤿��� $| �򥻥åȤ���ɬ�פ����뤫�⤷��ޤ���
��:
.nf

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

.fi
.Sp
�⤷���ǽ�ΰ����������˼¹Ԥ������ΤǤʤ����¹Ԥ��褦�Ȥ��Ƥ���
�ץ�������̾���򺾾Τ����������ʤ顢���������餻�����ץ��������ѿ���
������Ƥơ�LIST �������ѿ���̾���򥳥�ޤ��դ������֤��褦��
����Ǥ��ޤ���
(����ϡ����Ȥ�ñ�쥹���餷���ꥹ�Ȥ�̵���Ƥ⡢���¿�����ͤ����
�ꥹ�ȤȤ��� LIST �β��������ޤ���)
��:
.nf

.ne 2
	$shell = '/bin/csh';
	exec $shell '-sh';		# �������󥷥���Τդ�򤷤ޤ�

.fi
.Ip "exit(EXPR)" 8 6
.Ip "exit EXPR" 8
EXPR ��ɾ�������������ˤ����ͤǽ�λ���ޤ���
��:
.nf

.ne 2
	$ans = <STDIN>;
	exit 0 \|if \|$ans \|=~ \|/\|^[Xx]\|/\|;

.fi
.IR die
�򻲾Ȥ��Ʋ�������
EXPR ����ά�����ȡ��� 0 �ξ��֤ǽ�λ���ޤ���
.Ip "exp(EXPR)" 8 3
.Ip "exp EXPR" 8
.I e
�� EXPR ����֤��ޤ��� EXPR ���ά����ȡ�exp($_) ���֤��ޤ���
.Ip "fcntl(FILEHANDLE,FUNCTION,SCALAR)" 8 4
fcntl(2) �ؿ��μ����Ǥ���
�������ؿ����������ˤϡ�¿ʬ
.nf

	require "fcntl.ph";	# ¿ʬ /usr/local/lib/perl/fcntl.ph

.fi
��Ϥ�˽񤤤Ƥ����ʤ���Фʤ�ʤ��Ǥ��礦��
�⤷��fcntl.ph ��¸�ߤ��ʤ������⤷�������������������Ƥ��ʤ���硢
<sys/fcntl.h> �Τ褦�� C �Υإå��ե�����˴�Ť��ơ�
��ʬ�Dz��Ȥ����ʤ���Фʤ�ޤ��� 
(perl kit ������� h2ph �ȸƤФ�� perl ������ץȤ����ꡢ
���Τ��Ȥ�����Ƥ����Ǥ��礦)
�����ν���������ͤ��֤����Ȥϡ�
���θ�˽񤫤�Ƥ��� ioctl �Τ褦��ư��ޤ���
fcntl �ϡ�fcntl(2) ����������Ƥ��ʤ��ޥ���ǻȤ����
��̿Ū���顼�������ޤ���
.Ip "fileno(FILEHANDLE)" 8 4
.Ip "fileno FILEHANDLE" 8 4
�ե�����ϥ�ɥ���Ф���ե�����ǥ�������ץ����֤��ޤ���
select() �Υӥåȥޥåפ�������Τ������Ǥ���
FILEHANDLE �������ȡ������ͤ��ե�����ϥ�ɥ��̾���Ȳ�ᤵ��ޤ���
.Ip "flock(FILEHANDLE,OPERATION)" 8 4
�ե�����ϥ�ɥ���Ф� flock(2) ��ƤӤޤ���
OPERATION ������ˤĤ��Ƥϡ�flock(2) �Υޥ˥奢��򻲾Ȥ��Ʋ�������
��������п��򡢼��Ԥ���е����֤��ޤ���
flock(2) ����������Ƥ��ʤ��ޥ���ǻȤ��ȡ���̿Ū���顼�ˤʤ�ޤ���
�ʲ��ϡ�BSD �����ƥ�Υ᡼��ܥå����˥᡼����ɲä��ޤ���
.nf

.ne 20
	$LOCK_SH = 1;
	$LOCK_EX = 2;
	$LOCK_NB = 4;
	$LOCK_UN = 8;

	sub lock {
	    flock(MBOX,$LOCK_EX);
	    # �ԤäƤ���֤ˡ�¾��ï�����ɲä���
	    # �������...
	    seek(MBOX, 0, 2);
	}

	sub unlock {
	    flock(MBOX,$LOCK_UN);
	}

	open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")
		|| die "Can't open mailbox: $!";

	do lock();
	print MBOX $msg,"\en\en";
	do unlock();

.fi
.Ip "fork" 8 4
fork() �����ƥॳ�����¹Ԥ��ޤ���
�ƥץ������˻Ҥ� pid ���֤����ҥץ������ˤ� 0 ���֤��ޤ��� 
����: �ե�å��夵��Ƥ��ʤ��Хåե��ϡ�ξ���Υץ������ǥե�å���
���줺�˻Ĥ�ޤ����������Ž��Ϥ��򤱤뤿��ˡ�$| �򥻥åȤ���ɬ�פ�
���뤫�⤷��ʤ��Ȥ������Ȥ��̣���ޤ���
.Ip "getc(FILEHANDLE)" 8 4
.Ip "getc FILEHANDLE" 8
.Ip "getc" 8
FILEHANDLE �˷�ӤĤ���줿���ϥե����뤫�顢����ʸ�����֤��ޤ���
EOF �Ǥϥ̥���֤��ޤ��� FILEHANDLE ���ά����ȡ�STDIN �����ɤ߹���
�ޤ���
.Ip "getlogin" 8 3
���ߤΥ������������ /etc/utmp ����������С�������֤��ޤ���
�����ʤ���С�getpwuid ��ȤäƲ�������

	$login = getlogin || (getpwuid($<))[0] || "Somebody";

.Ip "getpeername(SOCKET)" 8 3
SOCKET ��³�θ�����¦�� pack ���줿 sockaddr ���ɥ쥹���֤��ޤ���
.nf

.ne 4
	# ���� sockaddr
	$sockaddr = 'S n a4 x8';
	$hersockaddr = getpeername(S);
.ie t \{\
	($family, $port, $heraddr) = unpack($sockaddr,$hersockaddr);
'br\}
.el \{\
	($family, $port, $heraddr) =
			unpack($sockaddr,$hersockaddr);
'br\}

.fi
.Ip "getpgrp(PID)" 8 4
.Ip "getpgrp PID" 8
���ꤵ�줿 PID ���Ф��븽�ߤΥץ��������롼�פ��֤��ޤ���
���ߤΥץ������Ǥ� 0 �Ǥ���
getpgrp(2) ����������Ƥ��ʤ��ޥ���ǻȤ��ȡ���̿Ū���顼�ˤʤ�ޤ���
EXPR ����ά�����ȡ����ߤΥץ������Υץ��������롼�פ��֤�ޤ���
.Ip "getppid" 8 4
�ƥץ������Υץ����� ID ���֤��ޤ���
.Ip "getpriority(WHICH,WHO)" 8 4
�ץ��������ץ��������롼�ס��桼���θ��ߤΥץ饤����ƥ����֤��ޤ���
(getpriority(2)�򻲾Ȥ��Ʋ�������)
getpriority(2) ��������Ƥ��ʤ��ޥ���ǻȤ�����̿Ū���顼�ˤʤ�ޤ���
.Ip "getpwnam(NAME)" 8
.Ip "getgrnam(NAME)" 8
.Ip "gethostbyname(NAME)" 8
.Ip "getnetbyname(NAME)" 8
.Ip "getprotobyname(NAME)" 8
.Ip "getpwuid(UID)" 8
.Ip "getgrgid(GID)" 8
.Ip "getservbyname(NAME,PROTO)" 8
.Ip "gethostbyaddr(ADDR,ADDRTYPE)" 8
.Ip "getnetbyaddr(ADDR,ADDRTYPE)" 8
.Ip "getprotobynumber(NUMBER)" 8
.Ip "getservbyport(PORT,PROTO)" 8
.Ip "getpwent" 8
.Ip "getgrent" 8
.Ip "gethostent" 8
.Ip "getnetent" 8
.Ip "getprotoent" 8
.Ip "getservent" 8
.Ip "setpwent" 8
.Ip "setgrent" 8
.Ip "sethostent(STAYOPEN)" 8
.Ip "setnetent(STAYOPEN)" 8
.Ip "setprotoent(STAYOPEN)" 8
.Ip "setservent(STAYOPEN)" 8
.Ip "endpwent" 8
.Ip "endgrent" 8
.Ip "endhostent" 8
.Ip "endnetent" 8
.Ip "endprotoent" 8
.Ip "endservent" 8
�����Υ롼����ϡ������ƥ�饤�֥�����Ʊ̾�δؿ���¹Ԥ��ޤ���
����Υ���ƥ����Ȥ���Ǥϡ������γ� get �롼���������ͤϡ�
�ʲ��Τ褦�ˤʤ�ޤ�:
.nf

	($name,$passwd,$uid,$gid,
	   $quota,$comment,$gcos,$dir,$shell) = 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.\|.\|.

.fi
(�⤷����ȥ꤬¸�ߤ��ʤ���С��̥�ꥹ�Ȥˤʤ�ޤ���)
.Sp
������Υ���ƥ����ȤǤϡ�
name �ˤ�븡���Ǥʤ����ˤ� name ������졢
name �ˤ�븡���ξ��ˤ� name �ʳ��������ޤ���
(����ȥ꤬¸�ߤ��ʤ����ϡ�undefined �ͤȤʤ�ޤ���)
��:
.nf

	$uid = getpwnam
	$name = getpwuid
	$name = getpwent
	$gid = getgrnam
	$name = getgrgid
	$name = getgrent
	¾

.fi
getgr.\|.\|. ���֤� $menbers �ͤϡ�����Ƕ��ڤ�줿���롼�ץ��Ф�
��������̾�Υꥹ�ȤǤ���
.Sp
gethost.\|.\|. �ؿ��Ǥϡ�h_errno �ѿ��� C �ǥ��ݡ��Ȥ���Ƥ���С�
�ؿ��Υ����뤬���Ԥ����Ȥ� $? ��𤷤��֤���ޤ���
���������ؿ���������֤� @addrs �ͤϡ��������륷���ƥ�饤�֥��
�ƤӽФ����֤��줿 raw address �Υꥹ�ȤǤ���
���󥿡��ͥåȥɥᥤ�� (INET) �Ǥϡ��ƥ��ɥ쥹�� 4 �Х���Ĺ��
�ʲ��Τ褦�˽񤯤� unpack �Ǥ��ޤ���
.nf

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

.fi
.Ip "getsockname(SOCKET)" 8 3
pack ���줿��SOCKET��³�Τ�����¦�� sockaddr ���ɥ쥹���֤��ޤ���
.nf

.ne 4
	# An internet sockaddr
	$sockaddr = 'S n a4 x8';
	$mysockaddr = getsockname(S);
.ie t \{\
	($family, $port, $myaddr) = unpack($sockaddr,$mysockaddr);
'br\}
.el \{\
	($family, $port, $myaddr) =
			unpack($sockaddr,$mysockaddr);
'br\}

.fi
.Ip "getsockopt(SOCKET,LEVEL,OPTNAME)" 8 3
�׵ᤷ�������åȤΥ��ץ������֤��ޤ������顼�ξ��� undefined ��
�֤��ޤ���
.Ip "gmtime(EXPR)" 8 4
.Ip "gmtime EXPR" 8
time �ؿ����֤��줿�����Greenwich timezone �Ȥ��� 9 ���Ǥ������
�Ѵ����ޤ���
�̾�ϼ��Τ褦�˻Ȥ��ޤ�:
.nf

.ne 3
.ie t \{\
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time);
'br\}
.el \{\
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
						gmtime(time);
'br\}

.fi
���٤Ƥ��������ǤϿ��ͤǡ���¤�� tm ����ľ���������ΤǤ���
����ˤ�� $mon �� 0.\|.11 ���ϰϤ� $wday �� 0.\|.6 ���ϰϤǤ��뤳�Ȥ�
�ʤ�ޤ���
EXPR ���ά����ȡ�gmtime(time) ��¹Ԥ��ޤ���
.Ip "goto LABEL" 8 6
LABEL �Ȥ�����٥���դ���줿ʸ��õ������������¹Ԥ�Ƴ����ޤ���
���ߤΤȤ������ץ�������������� do {} ��¤����¦��
����ҤˤʤäƤ��ʤ�ʸ�ˤ����Ԥ��ޤ���
����ʸ�ϸ�ΨŪ�ˤϼ�������Ƥ��餺��
.IR sed -to- perl
�����ץ��������ñ�ˤǤ���褦�ˤ��뤿���������ޤ���
�������줿
.I sed
������ץȤΰ�����Υ��ݡ��ȤϤ��ޤ��������Υ��ޥ�ƥ��å�����䤬����
�ѹ����뤫�狼��ʤ��Τǡ��������Ǥ�ǻȤäƲ�������
�����Ȥ�ʤ������ɤ��Ǥ��礦��
.Ip "grep(EXPR,LIST)" 8 4
LIST �γ����Ǥ��Ф��� (��������ˤϳ����Ǥ� $_ �˥��å�) ��EXPR ��
ɾ�����ơ��������Ǥ����ɾ�����줿���Ǥ�������ʤ�������֤��ޤ���
������Υ���ƥ����ȤǤϡ��������ˤʤä��������ͤ��֤��ޤ���
.nf

	@foo = grep(!/^#/, @bar);    # �����Ȥ�����ޤ�

.fi
$_ �������ͤؤλ��ȤʤΤǡ���������Ǥ��ѹ�������˻Ȥ��뤳�Ȥ�
�Ф��Ƥ����ޤ��礦��
����������Ǥ�����LIST ��̾���ΤĤ�������Ǥʤ��ȡ��������ʷ�̤�
�������������Ȥˤʤ�ޤ���
.Ip "hex(EXPR)" 8 4
.Ip "hex EXPR" 8
10 ���� EXPR �� 16 ��ʸ����ˤ����֤��ޤ���
(0 �ޤ��� 0x �ǻϤޤ�ʸ������᤹��ʤ顢oct() �򻲾Ȥ��Ʋ�������)
EXPR ���ά����� $_ ��Ȥ��ޤ���
.Ip "index(STR,SUBSTR,POSITION)" 8 4
.Ip "index(STR,SUBSTR)" 8 4
STR ����ǡ�POSITION ������ʹߤ˺ǽ�� SUBSTR ���������֤��֤��ޤ���
POSITION ���ά����ȡ�ʸ�������Ƭ���鸡�����ޤ���
����ͤϡ�0 �� $[ �ѿ������ꤵ�줿��Τ��١����ˤʤ�ޤ���
SUBSTR ���ߤĤ���ʤ��ȡ��١������� 1 ��������ͤ��֤����̾� \-1 ��
�ʤ�ޤ���
.Ip "int(EXPR)" 8 4
.Ip "int EXPR" 8
EXPR �����������֤��ޤ���
EXPR ����ά�����ȡ�$_ ��Ȥ��ޤ���
.Ip "ioctl(FILEHANDLE,FUNCTION,SCALAR)" 8 4
����ϡ�ioctl(2) �ؿ���������Ƥ��ޤ���
�������ؿ����������ˤϡ�¿ʬ�Ϥ������
.nf

	require "ioctl.ph";	# ¿ʬ /usr/local/lib/perl/ioctl.ph

.fi
�Ƚ񤫤ʤ���Фʤ�ʤ��Ǥ��礦��
ioctl.ph ��¸�ߤ��ʤ������ޤ����������������Ƥ��ʤ���硢
<sys/ioctl.h> �Τ褦�� C �Υإå��ե����뤫�鼫ʬ���ȤǤʤ�Ȥ�����
����Фʤ�ޤ���
(perl ���åȤˤ��� h2ph �Ȥ���������ץȤ����ν����ˤʤ�Ǥ��礦��)
SCALAR �ϡ�FUNCTION�˰�¸���ơ����Ȥޤ��Ͻ񤭹��ߤ�����ޤ��� 
FUNCTION \*(--SCALAR ��ʸ�����ͤؤΥݥ��󥿤ϡ��ºݤ� ioctl �ƤӽФ���
�� 3 �������Ϥ���ޤ���
(SCALAR ��ʸ�����ͤǤʤ����ͤǤ��ä���硢ʸ�����ͤؤΥݥ��󥿤Ǥʤ�
���ͤ��Τ�Τ��Ϥ���ޤ������줬���Ǥ��뤳�Ȥ��ݾڤ���ˤϡ����Υ������
�Ȥ����� 0 ��ä��Ʋ�������)
ioctl() �˻Ȥ��빽¤�Τ��ͤ򰷤��ˤϡ�pack() �ؿ��� unpack() �ؿ���
�����Ǥ���
������ϡ�DEL �� erase ʸ���򥻥åȤ��ޤ���
.nf

.ne 9
	require 'ioctl.ph';
	$sgttyb_t = "ccccs";		# chars 4 �Ĥ� short 1 ��
	if (ioctl(STDIN,$TIOCGETP,$sgttyb)) {
		@ary = unpack($sgttyb_t,$sgttyb);
		$ary[2] = 127;
		$sgttyb = pack($sgttyb_t,@ary);
		ioctl(STDIN,$TIOCSETP,$sgttyb)
			|| die "Can't ioctl: $!";
	}

.fi
ioctl (�� fcntl) ������ͤϰʲ����̤�Ǥ�:
.nf

.ne 4
	OS �������:\h'|3i'perl�������:
	  -1\h'|3i'  undefined ��
	  0\h'|3i'  ʸ���� "0 but true"
	  ����ʳ�\h'|3i'  ���ο�

.fi
���Τ褦�ˡ�perl ���������˿��򡢼��Ի��˵����֤��ޤ�����
���ڥ졼�ƥ��󥰥����ƥफ���֤����ºݤ��ͤ��ñ��Ƚ�ꤹ�뤳�Ȥ��Ǥ��ޤ�:
.nf

	($retval = ioctl(...)) || ($retval = -1);
	printf "System returned %d\en", $retval;
.fi
.Ip "join(EXPR,LIST)" 8 8
.Ip "join(EXPR,ARRAY)" 8
ʬ�䤵��Ƥ��� LIST �� ARRAY ��ʸ����򡢥ե�����ɥ��ѥ졼���Ȥ���
�� EXPR ��Ϥ������Ĥ�ʸ����ˤĤʤ��ơ�����ʸ������֤��ޤ���
��:
.nf
    
.ie t \{\
    $_ = join(\|\':\', $login,$passwd,$uid,$gid,$gcos,$home,$shell);
'br\}
.el \{\
    $_ = join(\|\':\',
		$login,$passwd,$uid,$gid,$gcos,$home,$shell);
'br\}

.fi
.IR split
�򻲾Ȥ��Ʋ�������
.Ip "keys(ASSOC_ARRAY)" 8 6
.Ip "keys ASSOC_ARRAY" 8
̾���ΤĤ���Ϣ������Τ��٤ƤΥ�������ʤ����̤�������֤��ޤ���
�����ϡ��������������ʽ���֤���ޤ�����values() �ؿ��� each() �ؿ�
(����ˤ�ä�Ϣ��������ѹ�����ޤ���) �����������Τ�Ʊ����ˤʤ�ޤ���
�ʲ��ϡ��Ķ��ѿ���ɽ�������̤���ˡ�Ǥ�:
.nf

.ne 5
	@keys = keys %ENV;
	@values = values %ENV;
	while ($#keys >= 0) {
		print pop(@keys), \'=\', pop(@values), "\en";
	}

�����ǥ����Ȥ����:

.ne 3
	foreach $key (sort(keys %ENV)) {
		print $key, \'=\', $ENV{$key}, "\en";
	}

.fi
.Ip "kill(LIST)" 8 8
.Ip "kill LIST" 8 2
�ץ������Υꥹ�Ȥ˥����ʥ������ޤ���
�ꥹ�Ȥκǽ�����Ǥϡ������륷���ʥ�Ǥʤ���Фʤ�ޤ���
�����ʥ����������������ץ������ο����֤��ޤ���
.nf

	$cnt = kill 1, $child1, $child2;
	kill 9, @goners;

.fi
�����ʥ뤬��ξ�硢�ץ�����������˥ץ��������롼�פ� kill ���ޤ���
(System V�Ǥϡ���� \fI�ץ�����\fR �ֹ�ϥץ��������롼�פ� kill
���ޤ������ߴ����Ϥ���ޤ���)
�������ȤǤ�����줿�����ʥ�̾��Ȥ��ޤ���
.Ip "last LABEL" 8 8
.Ip "last" 8
.I last
���ޥ�ɤϡ�(�롼����ǻȤ���褦��) C ��
.I break
ʸ�˻��Ƥ��ơ���������롼�פ�ľ���˽�λ���ޤ���
LABEL ����ά�����ȡ����Υ��ޥ�ɤϺǤ���¦�Υ롼�פ�ȴ���ޤ���
.I continue
�֥��å������ä��Ȥ��Ƥ⡢�¹Ԥ���ޤ���:
.nf

.ne 4
	line: while (<STDIN>) {
		last line if /\|^$/;	# �إå������ä���ȴ���ޤ�
		.\|.\|.
	}

.fi
.Ip "length(EXPR)" 8 4
.Ip "length EXPR" 8
EXPR ���ͤ�ʸ����Ĺ���֤��ޤ���
EXPR ���ά����ȡ�$_ ��Ĺ�����֤��ޤ���
.Ip "link(OLDFILE,NEWFILE)" 8 2
OLDFILE �˥�󥯤��줿 NEWFILE ��������ޤ���
��������� 1 �򡢼��Ԥ���� 0 ���֤��ޤ���
.Ip "listen(SOCKET,QUEUESIZE)" 8 2
listen �����ƥॳ�����Ʊ�����Ȥ�Ԥʤ��ޤ���
��������ȿ��򡢼��Ԥ���ȵ����֤��ޤ���
�ץ��������̿��Υ�����������򻲾Ȥ��Ʋ�������
.Ip "local(LIST)" 8 4
�Ĥ����֥��å������֥롼����eval ��\*(L"do\*(R" �˶ɽ�Ū��
�ѿ��ꥹ�Ȥ�������ޤ���
�ꥹ�Ȥ��줿���٤Ƥ����ǤϺ����ͤȤ��������ʤ�ΤǤʤ���Фʤ�ޤ���
���α黻�Ҥϡ�LIST ��Τ��λ����Ǥ��ѿ��򱣤줿�����å�����¸����
�֥��å��䥵�֥롼����� eval ��ȴ����Ȥ����᤹�褦��ư��ޤ���
����ϡ��ƤФ줿���֥롼����⥰�����Х��ѿ��Ǥʤ������������ѿ���
���Ȥ��뤳�Ȥ��̣���ޤ���
������������С�LIST ���������ƥ��������ѿ����������Ƥ⤫�ޤ��ޤ���
(����ͤ�������ͤȤ���Ϳ�����Ƥ��ʤ���С�undefined �ͤȤ���
��������ޤ���)
���̡�����ϥ��֥롼����Υѥ�᡼����̾����Ĥ���Τ˻Ȥ��ޤ���
��:
.nf

.ne 13
	sub RANGEVAL {
		local($min, $max, $thunk) = @_;
		local($result) = \'\';
		local($i);

		# ¿ʬ $thunk �� $i �򻲾Ȥ��Ƥ��ޤ�

		for ($i = $min; $i < $max; $i++) {
			$result .= eval $thunk;
		}

		$result;
	}

.ne 6
	if ($sw eq \'-v\') {
	    # �������Х������ǥ��������������������ޤ�
	    local(@ARGV) = @ARGV;
	    unshift(@ARGV,\'echo\');
	    system @ARGV;
	}
	# @ARGV �������ᤵ��ޤ�

.ne 6
	# ���Ū�� digits �Ȥ���Ϣ��������ɲä򤷤Ƥ��ޤ���
	if ($base12) {
		# (����: ���줬��ΨŪ�ȸ��������櫓�ǤϤ���ޤ���)
		local(%digits) = (%digits,'t',10,'e',11);
		do parse_num();
	}

.fi
local() �ϼ¹Ի��Υ��ޥ�ɤǡ��롼�׽�λ������������٤˳�������ޤǤϡ�
�롼�פ��̤뤿�Ӥ˼¹Ԥ��졢��󥹥��å�����񤷤Ƥ����ޤ���
.Ip "localtime(EXPR)" 8 4
.Ip "localtime EXPR" 8
time �ؿ����֤��줿����򡢥������륿���ॾ����Ȥ��Ʋ��Ϥ��줿 9 ���Ǥ�
������Ѵ����ޤ���
�̾A�Τ褦�˻Ȥ��ޤ�:
.nf

.ne 3
.ie t \{\
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
'br\}
.el \{\
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
						localtime(time);
'br\}

.fi
���٤Ƥ��������ǤϿ����ǡ���¤�� tm ����ľ������줿��ΤǤ���
����ˤ�� $mon �� 0.\|.11 ���ϰϤ� $wday �� 0.\|.6 ���ϰϤǤ��뤳�Ȥ�
�ʤ�ޤ���
EXPR ���ά����ȡ�localtime(time) ��¹Ԥ��ޤ���
.Ip "log(EXPR)" 8 4
.Ip "log EXPR" 8
EXPR �� (�줬
.IR e
��) �п����֤��ޤ���
EXPR ���ά����ȡ�$_ �� log ���֤��ޤ���
.Ip "lstat(FILEHANDLE)" 8 6
.Ip "lstat FILEHANDLE" 8
.Ip "lstat(EXPR)" 8
.Ip "lstat SCALARVARIABLE" 8
stat() �ؿ���Ʊ�����Ȥ�¹Ԥ��ޤ���������ܥ�å���󥯤Ǥϻؤ��Ƥ���
��Υե����������˥���ܥ�å���󥯼��Ȥξ��֤��֤��ޤ���
����ܥ�å���󥯤���������Ƥ��ʤ������ƥ�Ǥϡ��̾�� stat ��
�¹Ԥ��ޤ���
.Ip "m/PATTERN/gio" 8 4
.Ip "/PATTERN/gio" 8
�ѥ�����ޥå��˹礦ʸ����򸡺������� (1) ���� (\'\') ��
�֤��ޤ���
=~ �� !~ ��𤷤�ʸ����λ��꤬�ʤ���С�ʸ���� $_ ����������ޤ���
(=~ �ǻ��ꤵ�줿ʸ����ϡ������ͤǤ���ɬ�פϤ���ޤ���
����ɾ����̤Ǥ⤫�ޤ��ޤ��󤬡�=~ �Ϥɤ��餫�Ȥ�����ͥ���٤��⤤���Ȥ�
�Ф��Ƥ����Ʋ�������)
����ɽ���Υ��������򻲾Ȥ��Ʋ�������
.Sp
/ �����ڤ�ʸ���Ǥ����硢�Ϥ�� \*(L'm\*(R' �Ͼ�ά��ǽ�Ǥ���\*(L'm\*(R' ��
����ȡ��ѿ����ʳ��Τɤ�ʸ���Ǥ���ڤ�ˤǤ��ޤ���
����ϡ��ä� \*(L'/\*(R' ��ޤ� UNIX �Υѥ�̾�ؤΥޥå��������Ǥ���
�Ǹ�ζ��ڤ�θ�˥��ץ����ʸ�� \*(L'i\*(R' ��³���ȡ��ޥå��󥰤�
��ʸ����ʸ���ζ��̤ʤ��Ԥʤ��ޤ���
PATTERN �ϡ��������ѿ��ؤλ��Ȥ�ޤ�Ǥ��Ƥ�褯������ϥѥ����󸡺�
��ɾ������������������ޤ� (�ѥ�����ϥꥳ��ѥ��뤵��ޤ�) ��
( $) �� $| ��ʸ����ü�Υƥ��Ȥ˸����뤿�ᡢ�����ϹԤʤ��ޤ���)
�ѥ��������٤�������ѥ��뤵���������ϡ�����ζ��ڤ�ʸ��
�θ�� \*(L"o\*(R" ��ä��Ʋ�������
����ˤ�ꡢ;ʬ�ʼ¹Ի��ƥ���ѥ�����򤱤���Τǡ������������ͤ�
������ץȤ�ư���Ƥ�����桢�Ѥ��ʤ��Ȥ��ˤ������Ǥ���
PATTERN ���̥�ʸ����ɾ�����줿�Ȥ��ϡ��Ǹ��������������ɽ���������
�Ȥ��ޤ���
.Sp
�����ͤ�ɬ�פʥ���ƥ����ȤǻȤ���ȡ��ѥ�����ޥå��ϥѥ���������
�ޥå����� subexpression ���̤Ǥ����ä���Τ��ʤ����
($1, $2, $3.\|.\|.)
����ʤ�������֤��ޤ���
���ξ�硢�ºݤˤ� $1, $2 ���򥻥åȤ�*����*��
$+,  $`, $&, $' �⥻�åȤ��ޤ���
�ޥå������Ԥ���ȡ��̥������֤�ޤ���
�ޥå����������Ƥ��̤��ʤ��ȡ������� (1) ���֤�ޤ���
.Sp
��:
.nf

.ne 4
    open(tty, \'/dev/tty\');
    <tty> \|=~ \|/\|^y\|/i \|&& \|do foo(\|);	# y �ʤ� foo ��¹�

    if (/Version: \|*\|([0\-9.]*\|)\|/\|) { $version = $1; }

    next if m#^/usr/spool/uucp#;

.ne 5
    # �äޤ�ʤ��ͤ� grep
    $arg = shift;
    while (<>) {
	    print if /$arg/o;	# ���٤�������ѥ���
    }

    if (($F1, $F2, $Etc) = ($foo =~ /^(\eS+)\es+(\eS+)\es*(.*)/))

.fi
���κǸ����ϡ�$foo ��ǽ�����ȻĤ�� split �������ĤΥե������
�� $F1 ��$F2 ��$Etc ���������ޤ���
�ɤ줫���ѿ����������줿��硢���ʤ���ѥ����󤬥ޥå�������硢
���ξ��Ͽ��Ȥʤ�ޤ���
.Sp
\*(L"g\*(R" �����Ҥϡ��������Х�ѥ�����ޥå��λ���Ǥ�\*(--�Ĥޤꡢ
ʸ�������ǤǤ������¿���Υޥå���Ԥʤ��ޤ���
�ɤΤ褦�˿��񤦤��ϡ�����ƥ����Ȥ˰�¸���ޤ���
����Υ���ƥ����ȤǤϡ�����ɽ������Ǥ��٤Ƥγ�̤˥ޥå�����ʸ�����
�ꥹ�Ȥ��֤��ޤ�����̤��ʤ���С��ѥ��������Τ�Ϥ��̤����뤫
�Τ褦�˥ޥå�����ʸ���󤹤٤ƤΥꥹ�Ȥ��֤��ޤ���
������Υ���ƥ����ȤǤϡ�ʸ������̤��ƥޥå��������*��*���֤���
�ޥå����ʤ��ä��Ȥ�*��*���֤��ޤ��� (����������ȡ��Ǹ�˥ƥ��Ȥ���
����Ф��Ƥ��ơ���������ƤӸ�����Ϥ��Ȥ������ȤǤ���)
�Ǹ�Υޥå�����ʸ�����ѹ�����Ƥ��ʤ����Ȥ��ꤷ�Ƥ��ޤ���
�ޥå��ȥޥå��δ֤�ʸ������ѹ����뤳�Ȥϡ�̤�����ư������������
���⤷��ޤ���
(�ºݤˤ� substr()��Ȥäơ���ʸ�����Ĺ�����Ѥ����ˤ��ξ���ѹ�����
�ʤ顢�Ǥ��ޤ��������������̤ˤϤ��������ѹ��� s///g ��Ȥ��٤��Ǥ���)
��:
.nf

	# ����Υ���ƥ�����
	($one,$five,$fifteen) = (\`uptime\` =~ /(\ed+\e.\ed+)/g);

	# ������Υ���ƥ�����
	$/ = ""; $* = 1;
	while ($paragraph = <>) {
	    while ($paragraph =~ /[a-z][\'")]*[.!?]+[\'")]*\es/g) {
		$sentences++;
	    }
	}
	print "$sentences\en";

.fi
.Ip "mkdir(FILENAME,MODE)" 8 3
FILENAME �ǻ��ꤵ�줿�ǥ��쥯�ȥ��(umask �ǽ������줿) MODE �ǻ���
���줿�ѡ��ߥå����Ǻ������ޤ���
��������� 1 �򡢼��Ԥ���� 0 ���֤���$! (errno) �򥻥åȤ��ޤ���
.Ip "msgctl(ID,CMD,ARG)" 8 4
System V IPC �ؿ��� msgctl ��ƤӤޤ��� CMD �� &IPC_STAT �ʤ顢ARG ��
�֤��줿 msqid_ds ��¤���ݻ������ѿ��Ǥʤ���Фʤ�ޤ���
ioctl �Τ褦�ˡ����顼�ΤȤ��� undefined �ͤ�0 �ΤȤ�
�ˤ� "0 but true" �򡢤Ǥʤ���мºݤ�����ͤ��֤��ޤ���
.Ip "msgget(KEY,FLAGS)" 8 4
System V IPC �ؿ��� msgget ��ƤӤޤ����������ϥ�å��������塼 ID ��
���顼��������� undefined value ���֤��ޤ���
.Ip "msgsnd(ID,MSG,FLAGS)" 8 4
System V IPC �ؿ��� msgsnd ��Ƥӡ���å����� MSGS ���å��������塼 
ID ���������ޤ��� MSG �ϡ�pack("L", $type) �Ǻ���� long integer 
�Υ�å��������ǻϤ�ʤ���Фʤ�ޤ�����������п��򡢥��顼��������
�ȵ����֤��ޤ���
.Ip "msgrcv(ID,VAR,SIZE,TYPE,FLAGS)" 8 4
System V IPC �ؿ� msgrcv ��Ƥӡ�
��å��������塼 ID �����å������������ꡢ
�����å����������� SIZE ���ѿ� VAR �˳�Ǽ���ޤ���
��å�������������ȡ�VAR �˺ǽ�˳�Ǽ���줿��Τ���å�������
�ȤʤꡢVAR �κ���Ĺ�ϡ�SIZE �˥�å��������Υ�������ä�����Τ�
�ʤ뤳�Ȥ����դ��Ʋ�������
��������ȿ��򡢥��顼�Ǥϵ����֤��ޤ���
.Ip "next LABEL" 8 8
.Ip "next" 8
.I next
���ޥ�ɤϡ�C ��
.I continue
ʸ��Ʊ�ͤˡ��롼�פμ��η����֤���Ϥ�ޤ���
.nf

.ne 4
	line: while (<STDIN>) {
		next line if /\|^#/;	# �����Ȥ�ΤƤޤ�
		.\|.\|.
	}

.fi
������
.I continue
�֥��å�������ȡ��Ԥ��ΤƤ�줿���Ǥ�¹Ԥ���뤳�Ȥ�Ф��Ƥ�����
��������
LABEL ����ά�����ȡ����Υ��ޥ�ɤϺǤ���¦�Υ롼�פ�³���ޤ���
.Ip "oct(EXPR)" 8 4
.Ip "oct EXPR" 8
10 �ʿ� EXPR ��8 ��ʸ����ˤ����֤��ޤ���
(EXPR�� 0x �ǻϤޤ�ʸ����ʤ顢10 �ʤ������ 16 �ʤȤ����Ѵ����ޤ���)
�ʲ��ϡ�10 �ʡ�8 �ʡ�16 �ʤ�ɸ��Ū�ʵ�ˡ�򰷤��ޤ���
.nf

	$val = oct($val) if $val =~ /^0/;

.fi
EXPR ����ά�����ȡ�$_ ��Ȥ��ޤ���
.Ip "open(FILEHANDLE,EXPR)" 8 8
.Ip "open(FILEHANDLE)" 8
.Ip "open FILEHANDLE" 8
EXPR ��Ϳ����줿�ե�����̾�Υե�����򥪡��ץ󤷡�FILEHANDLE �˷��
�Ĥ��ޤ���
FILEHANDLE �����ξ�硢�����ͤ�ºݤ˥ե�����ϥ�ɥ뤬����̾��
�Ȥ��ƻȤ��ޤ���
EXPR ����ά�����ȡ�FILEHANDLE ��Ʊ̾�Υ������ѿ����ݻ������ͤ�
�ե�����̾�Ȥʤ�ޤ���
�ե�����̾������ \*(L"<\*(R" ���դ��뤫�������դ��ʤ���硢�ե������
�����Ѥ˥����ץ󤵤�ޤ���
�ե�����̾�� \*(L">\*(R" �ǻϤޤ�ȡ��ե�����Ͻ����Ѥ˥����ץ󤵤�ޤ��� 
�ե�����̾�� \*(L">>\*(R" �ǻϤޤ�ȡ��ե�������ɲý񤭹����Ѥ�
�����ץ󤵤�ޤ���
(\'>\' �� \'<\' ������ \'+\' ���դ���ȡ��ե�������ɤ߽�ξ�Ѥ�
�Ǥ��ޤ���)
�ե�����̾�� \*(L"|\*(R" �ǻϤޤ�ȡ��ե�����̾�Ͻ��Ϥ��ѥ��פ����
���ޥ�ɤȲ�ᤵ�졢�ե�����̾�� \*(L"|\*(R" �ǽ���ȡ����Ϥ�
�ѥ��פ���륳�ޥ�ɤȲ�ᤵ��ޤ���
(�����϶��ѥ��פ��륳�ޥ�ɤ�ɬ�פ��ʤ��Ǥ��礦��) \'\-\' �򥪡��ץ󤹤��
.I STDIN
��\'>\-\' �򥪡��ץ󤹤��
.IR STDOUT
�򥪡��ץ󤷤ޤ���
open �����������Ȥ���0 �Ǥʤ��ͤ򡢼��Ԥ����Ȥ� undefined �ͤ�
�֤��ޤ���
open ���ѥ��פ�ޤ��硢����ͤϥ��֥ץ������� pid �Ȥʤ�ޤ���
��:
.nf
    
.ne 3
	$article = 100;
	open article || die "Can't find article $article: $!\en";
	while (<article>) {\|.\|.\|.

.ie t \{\
	open(LOG, \'>>/usr/spool/news/twitlog\'\|);	# (������¸)
'br\}
.el \{\
	open(LOG, \'>>/usr/spool/news/twitlog\'\|);
					# (������¸)
'br\}

.ie t \{\
	open(article, "caesar <$article |"\|);		# ������ decrypt
'br\}
.el \{\
	open(article, "caesar <$article |"\|);
					# ������ decrypt
'br\}

.ie t \{\
	open(extract, "|sort >/tmp/Tmp$$"\|);		# $$ �ϸ��ߤΥץ�����
'br\}
.el \{\
	open(extract, "|sort >/tmp/Tmp$$"\|);
					# $$ �ϸ��ߤΥץ�����
'br\}

.ne 7
	# �����ꥹ�ȤΥե�����򡢤��줬���󥯥롼�ɤ����Τ�
	# �ޤ�ƽ������ޤ�

	foreach $file (@ARGV) {
		do process($file, \'fh00\');	# no pun intended
	}

	sub process {
		local($filename, $input) = @_;
		$input++;		# ʸ���󥤥󥯥����
		unless (open($input, $filename)) {
			print STDERR "Can't open $filename: $!\en";
			return;
		}
.ie t \{\
		while (<$input>) {		# ���ܻ��������
'br\}
.el \{\
		while (<$input>) {		# ���ܻ��������
'br\}
			if (/^#include "(.*)"/) {
				do process($1, $input);
				next;
			}
			.\|.\|.		# ³��
		}
	}

.fi
Bourne shell �δ����ˤ�ꡢEXPR �� \*(L">&\*(R" �ǻϤ��褦�ʻ����
�Ǥ��ޤ������ξ�硢ʸ����λĤ�ϥե�����ϥ�ɥ� (�����ʤ�
�ե�����ǥ�������ץ�) ��̾���Ȳ�ᤵ�졢dup ���� open ���ޤ���
>>, <, +>, +>>, +< �θ�� & ��ȤäƤ⤫�ޤ��ޤ���
���ꤹ��⡼�ɤϡ����Υե�����ϥ�ɥ�Υ⡼�ɤȰ��פ��Ƥ��ʤ��Ƥ�
�ʤ�ޤ���
�ʲ��ϡ�
.I STDOUT
��
.IR STDERR
����¸����������쥯�Ȥ�Ԥʤäơ����θ�ǽ��ᤷ�ޤ�:
.nf

.ne 21
	#!/usr/bin/perl
	open(SAVEOUT, ">&STDOUT");
	open(SAVEERR, ">&STDERR");

	open(STDOUT, ">foo.out") || die "Can't redirect stdout";
	open(STDERR, ">&STDOUT") || die "Can't dup stdout";

	select(STDERR); $| = 1;		# �Хåե���󥰤��ޤ���
	select(STDOUT); $| = 1;		# �Хåե���󥰤��ޤ���

	print STDOUT "stdout 1\en";	# ����⥵�֥ץ�������
	print STDERR "stderr 1\en"; 	# ư��ޤ�

	close(STDOUT);
	close(STDERR);

	open(STDOUT, ">&SAVEOUT");
	open(STDERR, ">&SAVEERR");

	print STDOUT "stdout 2\en";
	print STDERR "stderr 2\en";

.fi
���ޥ�� \*(L"\-\*(R" �ǥѥ��פ򥪡��ץ󤹤롢���ʤ�� \*(L"|\-\*(R" 
�� \*(L"\-|\*(R" �򥪡��ץ󤹤�ȡ����ۤΤ����� fork ���졢open ��
����ͤȤ��ƿƥץ������ˤϡ��ҥץ������� pid ���֤��졢�ҥץ������ˤ� 
0 ���֤���ޤ���
(open �������������ɤ����ϡ�defined($pid) ��Ȥä�Ƚ�Ǥ��Ʋ�������)
�ե�����ϥ�ɥ�ϡ��ƤˤȤä����̤ε�ư�򤷤ޤ������Ҥˤ� 
.IR STDOUT / STDIN
�˥ѥ��פ��줿�ե�����ϥ�ɥ�� i/o �Ȥʤ�ޤ���
�ҥץ������ǥե�����ϥ�ɥ뤬�����ץ󤵤줺��\*(--������
�ե�����ϥ�ɥ�ϡ�������
.I STDIN
����
.IR STDOUT
�ؤΥѥ��פȤʤ�ޤ���
�褯�Ȥ���Τϡ����̤Υѥ��פΥ����ץ��Ʊ�͡��ѥ��ץ��ޥ�ɤ�
�¹Ծ��֤򥳥�ȥ����뤷�����Ȥ���setuid ���줿�ץ����������餻��Ȥ���
�����륳�ޥ�ɤǥ᥿����饯���Υ����å��򤹤�ɬ�פ��ʤ��Ȥ��Ǥ���
������Ĥϡ����줾�줢������Ʊ���Ǥ�:
.nf

.ne 5
	open(FOO, "|tr \'[a\-z]\' \'[A\-Z]\'");
	open(FOO, "|\-") || exec \'tr\', \'[a\-z]\', \'[A\-Z]\';

	open(FOO, "cat \-n '$file'|");
	open(FOO, "\-|") || exec \'cat\', \'\-n\', $file;

.fi
�ѥ��פ��줿�ե�����ϥ�ɥ������Ū�� close ����ȡ��ƥץ�������
�ҥץ���������λ����Τ��ԤĤ��Ȥˤʤꡢ$? �˾��֤��֤��ޤ���
fork ��Ԥ����Ǥϡ�ξ���Υץ������ǥե�å��夵��ʤ��Хåե���
���Τޤ޻Ĥ뤳�Ȥ����դ��Ʋ�����������ϡ���Ž��Ϥ��򤱤뤿��� $| ��
���åȤ��������ɤ����Ȥ��̣���ޤ���
.Sp
open ���Ϥ��줿�ե�����̾�ϡ�����ζ��򤬽�����ޤ���
�տ�Ū���Ѥ�ʸ����ޤ�ե�����̾����ĥե�����򥪡��ץ󤷤����Ȥ��ϡ�
����ζ���⤳�Τ褦�˼�äƤ��ɬ�פ�����ޤ�:
.nf

.ne 2
        $file =~ s#^(\es)#./$1#;
        open(FOO, "< $file\e0");

.fi
.Ip "opendir(DIRHANDLE,EXPR)" 8 3
EXPR �Ȥ���̾���Υǥ��쥯�ȥ�� readdir(), telldir(), seekdir(),
rewinddir(),  closedir() �ǽ����Ǥ���褦�˥����ץ󤷤ޤ���
��������ȿ����֤��ޤ���
DIRHANDLE �ϡ�FILEHANDLE �Ȥ��̸ĤΤ��켫�Ȥ�̾�����֤�����ޤ���
.Ip "ord(EXPR)" 8 4
.Ip "ord EXPR" 8
EXPR �κǽ��ʸ���Υ��������ͤ���ͤ��֤��ޤ���
EXPR ����ά�����ȡ�$_ ��Ȥ��ޤ���
''' Comments on f & d by gnb@melba.bby.oz.au	22/11/89
.Ip "pack(TEMPLATE,LIST)" 8 4
����ޤ����ͤΥꥹ�Ȥ�����˼�ꡢ�Х��ʥ깽¤�Τ˥ѥå�����
��¤�Τ�ޤ�ʸ������֤��ޤ���
TEMPLATE ���ͤν���ȷ���Ϳ����ʸ���Υ��������󥹤ǡ��ʲ��Τ褦��
�ʤ�ޤ�:
.nf

	A	��������ʸ����(���ڡ����� padding �����)
	a	��������ʸ����(�̥뤬 padding �����)
	c	signed char
	C	unsigned char
	s	signed short
	S	unsigned short
	i	signed integer
	I	unsigned integer
	l	signed long
	L	unsigned long
	n	short (\*(L"network\*(R" order)
	N	long (\*(L"network\*(R" order)
	f	ñ������ư������ (native format)
	d	��������ư������ (native format)
	p	ʸ����ؤΥݥ���
	v	short (\*(L"VAX\*(R" (little-endian) order)
	V	long (\*(L"VAX\*(R" (little-endian) order)
	x	null byte
	X	Back up a byte
	@	���а��֤ˤޤǥ̥������
	u	uuencode ���줿ʸ����
	b	�ӥå�ʸ���� (vec()�Τ褦�ʾ���).
	B	�ӥå�ʸ���� (�߽�).
	h	16 ��ʸ���� (�� nybble ����).
	H	16 ��ʸ���� (�� nybble ����).

.fi
�ɤ�ʸ���ⷫ���֤������ɽ������³���뤳�Ȥ��Ǥ��ޤ���
"a", "A", "b", "B", "h", "H" �ʳ��η��Ǥϡ�pack �ؿ���
LIST ����������ꤵ�줿�������ͤ���ޤ���
�����֤����Ȥ��� * ��Ȥ��ȡ��Ĥꤹ�٤Ƥ�ʬ���������֤��ޤ���
"a" �� "A" �η����Ͱ�Ĥ������ޤ��󤬡������֤������ʸ����Ĺ
�Ȥ��� pack ����Τǡ��̥�����Ǥ� padding ��ɬ�פˤʤ�ޤ���
(unpack ����Ȥ��ϡ�"A" �ϡ����³���������ޤ�����"a" �Ϥ��ޤ���)
Ʊ�ͤˡ�"b" �� "B" �ե�����ɤϡ����ꤷ���ӥå�Ĺ�� pack ���ޤ���
"h" �� "H" �ե�����ɤϡ����ꤷ��Ĺ���� nybbles ��ѥå����ޤ���
�¿� (float �� double) �ϡ����Υޥ���ε�����ե����ޥåȤΤߤǤ���
��ư�������ե����ޥåȴط���¿������ɸ��� \*(L"network\*(R" ɽ����
̵�����Ȥ��顢�򴹤��뤳�ȤϤǤ��ޤ��󡣤���ϡ�
����ޥ���� pack ���줿��ư�������ǡ����ϡ�¾�Υޥ���Ǥϡ�
���Ȥ�ξ���� IEEE ��ư���������黻��ԤäƤ��Ƥ�
(����ɽ���� endian �� IEEE �λ��ͤˤ�̵������)��
�ɤ�ʤ����⤷��ʤ��Ȥ������Ȥ��̣���ޤ���
perl �ϡ����٤Ƥο��ͷ׻�������Ū�ˤ� double ���Ѥ���
double -> float -> double �Ȥ����Ѵ������٤򼺤��������Ȥ������Ȥ�
���դ��Ʋ�����
(���ʤ����unpack("f",pack("f", $foo)) �ϰ��̤� $foo �ˤϤʤ�ޤ���) ��
.br
��:
.nf

	$foo = pack("cccc",65,66,67,68);
	# foo �� "ABCD"
	$foo = pack("c4",65,66,67,68);
	# ���Ʊ��

	$foo = pack("ccxxcc",65,66,67,68);
	# foo �� "AB\e0\e0CD"

	$foo = pack("s2",1,2);
	# little-endian �� "\e1\e0\e2\e0" 
	# big-endian �� "\e0\e1\e0\e2"

	$foo = pack("a4","abcd","x","y","z");
	# "abcd"

	$foo = pack("aaaa","abcd","x","y","z");
	# "axyz"

	$foo = pack("a14","abcdefg");
	# "abcdefg\e0\e0\e0\e0\e0\e0\e0"

	$foo = pack("i9pl", gmtime);
	# �ºݤ� tm ��¤�� (���ʤ��Ȥ��Υ����ƥ�Ǥ�)

	sub bintodec {
	    unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
	}
.fi
���̤� unpack �ؿ��Ǥ�Ʊ���ƥ�ץ졼�Ȥ��Ȥ��ޤ���
.Ip "pipe(READHANDLE,WRITEHANDLE)" 8 3
�������륷���ƥॳ����Τ褦�˰��Ф���³���줿�ѥ��פ򥪡��ץ󤷤ޤ���
�ѥ��פǤĤʤ��ä��ץ������Υ롼�פ����ꤹ��Ȥ��ϡ����տ������ʤ���
�ǥåɥ��å��򵯤������Ȥ����뤳�Ȥ˵���Ĥ��Ʋ�������
����˲ä��ơ�perl �Υѥ��פ�ɸ�����ϤΥХåե���󥰤�Ȥ��Τǡ�
���ץꥱ�������˰ͤäƤϡ�$| �򥻥åȤ���
���ޥ����� WRITEHANDLE ��ե�å��夹��ɬ�פ����뤫�⤷��ޤ���
[perl �С������ 3.0 �ѥå���٥� 9 �ʾ夬ɬ��]
.Ip "pop(ARRAY)" 8
.Ip "pop ARRAY" 8 6
����κǸ���ͤ���Ф��������Ĺ���� 1 ����û�����ޤ���
.nf

	$tmp = $ARRAY[$#ARRAY\-\|\-];

.fi
Ʊ����̤Ȥʤ�ޤ���
��������Ǥ��ʤ����ϡ�undefined �ͤ��֤��ޤ���
.Ip "print(FILEHANDLE LIST)" 8 10
.Ip "print(LIST)" 8
.Ip "print FILEHANDLE LIST" 8
.Ip "print LIST" 8
.Ip "print" 8
ʸ����ޤ��ϡ�����޶��ڤ��ʸ����Υꥹ�Ȥ�ɽ�����ޤ���
��������ȡ�0 �ʳ����֤��ޤ���
FILEHANDLE �ϡ��ե�����ϥ�ɥ��̾�����ݻ������������ѿ�̾�Ǥ�
���ޤ��ޤ��󡣤���ˤ�� 1 ��٥�δ��ܻ��꤬�Ǥ��ޤ���
(����: FILEHANDLE ���ѿ��Ǽ��Υȡ����󤬹�ξ�硢+ ���������뤫
�����˳�̤��դ��ʤ��ȡ��黻�ҤȤ��Ʋ��δְ㤤�򤹤뤫�⤷��ޤ���)
FILEHANDLE ����ά�����ȡ��ǥե���Ȥ�ɸ����� (�ޤ��ϺǸ�� select
���줿���ϥ����ͥ�\*(-- select()�򻲾Ȥ��Ʋ�����) �˽��Ϥ��ޤ���
LIST ����ά�����ȡ�$_ ��
.IR STDOUT
�˽��Ϥ��ޤ���
�ǥե���Ƚ��ϥ����ͥ��
.I STDOUT
�ʳ������ꤹ��ˤϡ�select �黻�Ҥ�ȤäƲ�������
print �� LIST ����Τǡ�LIST ����Τ�Τϲ��Ǥ�����Υ���ƥ����Ȥ�
ɾ�����졢���֥롼����ƤӽФ��ʤ�����Υ���ƥ����Ȥ�ɾ�����줿����
���Ĥ��Ȥˤʤ�Τ�Ф��Ƥ����ޤ��礦��
�ޤ���print ������ɤθ�˺���̤��֤��Ȥ��ϡ��б����뱦��̤� 
print �ΰ����ν���򼨤�
\*(--���ʤ�� + ���������뤫����̤򤹤٤Ƥΰ������դ���
�ΤǤʤ���С�����̤��֤��ƤϤ����ޤ���
.Ip "printf(FILEHANDLE LIST)" 8 10
.Ip "printf(LIST)" 8
.Ip "printf FILEHANDLE LIST" 8
.Ip "printf LIST" 8
\*(L"print FILEHANDLE sprintf(LIST)\*(R" ��Ʊ���Ǥ���
.Ip "push(ARRAY,LIST)" 8 7
ARRAY (@ �Ͼ�ά��ǽ) �򥹥��å��Ȥ��ư�����LIST ���ͤ� ARRAY �ν����
�ɲä��ޤ���
ARRAY ��Ĺ���ϡ�LIST ��Ĺ�����������ޤ���
����ϡ��ʲ���Ʊ�����Ȥˤʤ�ޤ���
.nf

    for $value (LIST) {
	    $ARRAY[++$#ARRAY] = $value;
    }

.fi
��������ΨŪ�Ǥ���
.Ip "q/STRING/" 8 5
.Ip "qq/STRING/" 8
.Ip "qx/STRING/" 8
����ϡ��ºݤˤϴؿ��ǤϤ���ޤ��󤬡��������Ȥ��줿ʸ�����
�Хå�����å���򤿤������֤��᤮��Τ��򤱤뤿��Ρ�ñ�ʤ�
��ά��ˡ�Ǥ���
q �黻�Ҥϥ��󥰥륯�����Ȥ���������qq �黻�Ҥϥ��֥륯�����Ȥ�
�������ޤ���
qx �黻�Ҥϡ��Хå��������Ȥ��������ޤ���
�ѿ����Ǥʤ�ʸ���ʤ顢���Ԥ�ޤ�Ʋ��Ǥ⡢/ ������˶��ڤ�ʸ��
�ˤǤ��ޤ���
���ڤ꤬ ( �� { �ʤ顢��λ�ζ��ڤ�ϡ��б����� ) �� } �ˤʤ�ޤ���
(������ʸ���Ȥ��Ƥ� } �ˤ��̾��̤� \ ��ɬ�פˤʤ�ޤ���)
��:
.nf

.ne 5
	$foo = q!I said, "You said, \'She said it.\'"!;
	$bar = q(\'This is it.\');
	$today = qx{ date };
	$_ .= qq
*** The previous line contains the naughty word "$&".\en
		if /(ibm|apple|awk)/;      # :-)

.fi
.Ip "rand(EXPR)" 8 8
.Ip "rand EXPR" 8
.Ip "rand" 8
������� 0 ���� EXPR �ޤǤξ����������֤��ޤ���
(EXPR �����Ǥʤ���Фʤ�ޤ���)
EXPR ����ά�����ȡ�0 ���� 1 ���ϰϤ��ͤ��֤���ޤ���
srand() �򻲾Ȥ��Ʋ�������
.Ip "read(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5
.Ip "read(FILEHANDLE,SCALAR,LENGTH)" 8 5
���ꤵ�줿 FILEHANDLE ���顢LENGTH �Х��ȤΥǡ������ɤ߹��ߡ��ѿ� 
SCALAR �˳�Ǽ���ޤ���
�ºݤ��ɤ߹��᤿�Х��ȿ����֤������顼�ξ��� undef ���֤��ޤ���
SCALAR �ϼºݤ��ɤ߹��ޤ줿Ĺ���˹�碌�ơ����̤��ޤ���
�ɤ���ǡ�����ʸ����λϤ�Ǥʤ���¾�ξ��˳�Ǽ���뤿��ˡ�OFFSET ��
���ꤹ�뤳�Ȥ�Ǥ��ޤ���
����ϡ��ºݤˤ� stdio �� fread ������Ǽ�������Ƥ��ޤ���
������ read �����ƥॳ�����Ȥ��ˤϡ�sysread �򻲾Ȥ��Ʋ�������
.Ip "readdir(DIRHANDLE)" 8 3
.Ip "readdir DIRHANDLE" 8
opendir() �˥����ץ󤵤줿�ǥ��쥯�ȥ���Ρ����Υǥ��쥯�ȥꥨ��ȥ��
�֤��ޤ���
����Υ���ƥ����Ȥ���ǻȤ��ȡ��Ĥꤹ�٤ƤΥǥ��쥯�ȥꥨ��ȥ��
�֤��ޤ���
����ȥ꤬�ĤäƤ��ʤ���硢������Υ���ƥ����ȤǤ� undefined ����
����Υ���ƥ����ȤǤϥ̥�ꥹ�Ȥ��֤��ޤ���
.Ip "readlink(EXPR)" 8 6
.Ip "readlink EXPR" 8
����ܥ�å���󥯤���������Ƥ���С�����ܥ�å���󥯤��ͤ��֤��ޤ��� 
��������Ƥ��ʤ���С���̿Ū���顼���֤��ޤ���
�����ƥ२�顼�������ä��Ȥ��ϡ�undefined �ͤ��֤���$! (errno) ��
���åȤ��ޤ���
EXPR ���ά����ȡ�$_ ��Ȥ��ޤ���
.Ip "recv(SOCKET,SCALAR,LEN,FLAGS)" 8 4
�����åȤ����å�������������ޤ������ꤷ�� SOCKET �ե�����ϥ�ɥ�
���顢LENGTH �Х��ȤΥǡ����������ꡢ�ѿ� SCALAR �˳�Ǽ���ޤ���
sender �Υ��ɥ쥹���֤������顼�ξ��� undefined �ͤ��֤��ޤ���
SCALAR �ϡ��ºݤ��ɤ߹��ޤ줿Ĺ���˹�碌�ơ����̤��ޤ���
Ʊ̾�Υ����ƥॳ�����Ʊ���ե饰���Ѥ��ޤ���
.Ip "redo LABEL" 8 8
.Ip "redo" 8
.I redo
���ޥ�ɤϡ������ɾ�����뤳�Ȥʤ��ˡ��롼�ץ֥��å��Υ��ޥ�ɤ�
�Ƴ����ޤ���
.I continue
�֥��å������äƤ�¹Ԥ���ޤ���
LABEL ����ά�����ȡ��Ǥ���¦�Υ롼�פ򻲾Ȥ��ޤ���
�̾盧�Υ��ޥ�ɤϡ����Ϥ��줿���ƤˤĤ��ơ���ʬ���Ȥ���ޤ��褦��
�ץ������ǻȤ��ޤ�:
.nf

.ne 16
	# ñ�㲽���� Pascal �Υ����Ƚ���
	# (�ٹ�: ʸ������ˤ� { �� } �Ϥʤ���ΤȲ��ꤷ�Ƥ��ޤ�)
	line: while (<STDIN>) {
		while (s|\|({.*}.*\|){.*}|$1 \||) {}
		s|{.*}| \||;
		if (s|{.*| \||) {
			$front = $_;
			while (<STDIN>) {
				if (\|/\|}/\|) {	# �����Ƚ�λ?
					s|^|$front{|;
					redo line;
				}
			}
		}
		print;
	}

.fi
.Ip "rename(OLDNAME,NEWNAME)" 8 2
�ե�����̾���ѹ����ޤ���
��������� 1 �򡢼��Ԥ���� 0 ���֤��ޤ���
�ե����륷���ƥ�ζ�����ۤ��Ƥ�Ư���ޤ���
.Ip "require(EXPR)" 8 6
.Ip "require EXPR" 8
.Ip "require" 8
EXPR �� EXPR ��Ϳ�����ʤ���� $_ �ǻ��ꤵ�줿���饤�֥��ե������
���󥯥롼�ɤ��ޤ���
�ʲ��Τ褦�ʥ��֥롼�����Ʊ����̣�ˤʤ�ޤ�:
.nf

	sub require {
	    local($filename) = @_;
	    return 1 if $INC{$filename};
	    local($realfilename,$result);
	    ITER: {
		foreach $prefix (@INC) {
		    $realfilename = "$prefix/$filename";
		    if (-f $realfilename) {
			$result = do $realfilename;
			last ITER;
		    }
		}
		die "Can't find $filename in \e@INC";
	    }
	    die $@ if $@;
	    die "$filename did not return true value" unless $result;
	    $INC{$filename} = $realfilename;
	    $result;
	}

.fi
Ʊ��̾���ǻ��ꤵ�줿�ե�����ϡ����٤ϥ��󥯥롼�ɤ���ʤ����Ȥ�
���դ��Ʋ�������
�ɤν���������ɤε�ư�������������ȼ������ᡢ�ե�����κǸ��ʸ�ǡ�
�����֤��ʤ���Фʤ�ޤ��󡣤����顢����Ū�ˤ��������ե�����ϡ�
ɬ�������֤��Ȥ������Ȥ��Τ��Ǥʤ���С�\*(L"1;\*(R" ��
����褦�ˤ��ޤ���
.Ip "reset(EXPR)" 8 6
.Ip "reset EXPR" 8
.Ip "reset" 8
���̤˥롼�פν�����ѿ��򥯥ꥢ����Τ�
.I continue
�֥��å�����ǻȤ�졢�ƤӤ��줬Ư���褦�� ?? ������ꥻ�åȤ��ޤ���
���� 1 ʸ������ʬ���ƥꥹ�Ȥ������ (�ϥ��ե���ϰϻ���) �Ȥ��Ʋ�ᤵ��ޤ���
������ʸ���ΰ�ĤǻϤޤ��ѿ�������Ϥߤʽ�����֤˥ꥻ�åȤ���ޤ���
�����ά����ȡ����٤����ޥå����븡�� (?pattern?) ��ꥻ�åȤ���
�Ƥӥޥå�����褦�ˤ��ޤ���
���ѥå���������ѿ��ȸ����Τߤ�ꥻ�åȤ��ޤ���
��� 1 ���֤��ޤ���
��:
.nf

.ne 3
    reset \'X\';	\h'|2i'# ���٤Ƥ� X �ѿ���ꥻ�åȤ��ޤ�
    reset \'a\-z\';\h'|2i'# ��ʸ�����ѿ����٤Ƥ�ꥻ�åȤ��ޤ���
    reset;	\h'|2i'# ?? ������ꥻ�åȤ��ޤ���

.fi
����: ARGV �� ENV ��ä��Ƥ��ޤ����ᡢ\*(L"A\-Z\*(R" ��ꥻ�åȤ���
�Τϴ�����ޤ���
.Sp
dbm Ϣ������� reset ��ȤäƤ⡢dbm �ե�������ѹ����ޤ���
(��������perl ������å��夷������ȥ�ϳ��ե�å��夹��Τǡ�
dbm �ե������ͭ���Ƥ�����ϡ������Ǥ��������Ǥʤ����⤷��ޤ��󤬡�)
.Ip "return LIST" 8 3
���ꤷ���ͤǡ����֥롼���󤫤��֤�ޤ���
(���֥롼����ϡ���ưŪ�˺Ǹ��ɾ�����줿�����ͤ��֤����Ȥ�
���դ��Ʋ�������
����ϡ����ޤ����ˡ�Ǥ�\*(--����Ū��
.I return
�λ��Ѥǡ�����٤��ʤ�ޤ���)
.Ip "reverse(LIST)" 8 4
.Ip "reverse LIST" 8
����Υ���ƥ����ȤǤϡ�LIST �����Ǥ�ս���¤٤�������֤��ޤ���
������Υ���ƥ����ȤǤϡ�LIST �κǽ�����ǤΥХ������ս�ˤ���
ʸ������֤��ޤ���
.Ip "rewinddir(DIRHANDLE)" 8 5
.Ip "rewinddir DIRHANDLE" 8
DIRHANDLE �˴ؤ���readdir() ���ɤ߻Ϥ�븽�߰��֤�
�ǥ��쥯�ȥ����Ƭ�˥��åȤ��ޤ���
.Ip "rindex(STR,SUBSTR,POSITION)" 8 6
.Ip "rindex(STR,SUBSTR)" 8 4
STR ��ǡ�SUBSTR ���Ǹ�˸������֤��֤�¾�ϡ�index ������Ʊ����
ư��ޤ���
POSITION �����ꤵ���ȡ����ΰ��֤����ǺǸ�˸��줿���֤��֤��ޤ���
.Ip "rmdir(FILENAME)" 8 4
.Ip "rmdir FILENAME" 8
FILENAME �ǻ��ꤵ�줿�ǥ��쥯�ȥ꤬���ʤ�õ�ޤ���
��������� 1 �򡢼��Ԥ���� 0 ���֤���$! (errno) �򥻥åȤ��ޤ���
FILENAME ����ά�����ȡ�$_ ��Ȥ��ޤ���
.Ip "s/PATTERN/REPLACEMENT/gieo" 8 3
�ѥ�����˹礦ʸ����򸡺��������Ĥ�����ִ��ƥ����Ȥ��֤������ơ�
�ִ����Ԥʤ�줿�����֤��ޤ���
�Ǥʤ���С��� (0) ���֤��ޤ���
\*(L"g\*(R" �ϥ��ץ����Ǥ����⤷����С��ޥå������ѥ�����Ϥ��٤�
�ִ�����뤳�Ȥ��̣���ޤ���
\*(L"i\*(R" �⥪�ץ����Ǥ����⤷����С��ޥå��󥰤���ʸ����ʸ����
���̤ʤ��Ԥʤ��뤳�Ȥ��̣���ޤ���
\*(L"e\*(R" �⥪�ץ����Ǥ����⤷����С��ִ�ʸ�����
���֥륯�����ȤǰϤޤ줿ʸ����Τ褦�ˤȤ�����ꡢ
���Ȥ���ɾ������ʤ���Фʤ�ʤ����Ȥ��̣���ޤ���
�ѿ����Ǥʤ�ʸ���ʤ�ʤ�Ǥ⡢/ ���֤������ƶ��ڤ�ʸ���ˤǤ��ޤ���
���󥰥륯�����Ȥ��Ȥ���ȡ��ִ�ʸ���������ѿ���������
�Ԥʤ��ޤ��� (e �����ҤϤ����ͥ�褷�ޤ�)��
�Хå��������� ` ���Ȥ���ȡ��ִ�ʸ����ϥ��ޥ�ɤȤ��Ƽ¹Ԥ��졢
���ν��Ϥ��ºݤ��ִ��ƥ����ȤȤ��ƻȤ��뤳�Ȥˤʤ�ޤ���
PATTERN �� <>, () �Ƕ��ڤ���ȡ�REPLACEMENT �ϡ����켫�ȤΥ������Ȥ�
����������� <>, () �Ǥ��äƤ⡢�����Ǥʤ��Ƥ��ɤ����Ȥˤʤ�ޤ���
�㤨�С�s(foo)(bar) �� s<foo>/bar/ �Τ褦�ˡ�
=~ �� !~ �黻�Ҥ�𤹤�ʸ������꤬����ʤ��ä��Ȥ��ϡ�$_ ʸ����
�������ִ�����ޤ���
(=~ �ǻ��ꤵ�줿ʸ����ϡ��������ѿ�����������ǡ������ؤ���������
�ʤ��ƤϤʤ�ޤ��󡣤��ʤ�������ͤȤ������ȤǤ���)
�ѥ����󤬡�ʸ����ν����ƥ��Ȥ��� $ �Ǥʤ����ѿ��˸����� $ ��ޤ�
���ϡ������ѿ����¹Ի��˥ѥ��������������ޤ���
�������ѿ�����������ƥ���ѥ��뤵���ѥ������Ȥ������ʤ顢
����� \*(L"o\*(R" ���դ��Ʋ�������
PATTERN ���̥�ʸ�����ɾ�����줿�Ȥ��ϡ�����˺Ǹ��������������ɽ��
���Ȥ��ޤ���
����ɽ���Υ��������򻲾Ȥ��Ʋ�������
��:
.nf

    s/\|\e\|bgreen\e\|b/mauve/g;	# wintergreen ���ѹ����ޤ���

    $path \|=~ \|s|\|/usr/bin|\|/usr/local/bin|;

    s/Login: $foo/Login: $bar/; # �¹Ի��ѥ�����

    ($foo = $bar) =~ s/bar/foo/;

    $_ = \'abc123xyz\';
    s/\ed+/$&*2/e;		# \*(L'abc246xyz\*(R' �ˤʤ�
    s/\ed+/sprintf("%5d",$&)/e;	# \*(L'abc  246xyz\*(R' �ˤʤ�
    s/\ew/$& x 2/eg;		# \*(L'aabbcc  224466xxyyzz\*(R' �ˤʤ�

    s/\|([^ \|]*\|) *\|([^ \|]*\|)\|/\|$2 $1/;	# �Ϥ��2�ե�����ɤ��

.fi
(�Ǹ����Ǥ� \|\e\| ������� $ ��ȤäƤ��뤳�Ȥ����ա�
����ɽ���Υ��������򻲾Ȥ��Ʋ�������)
.Ip "scalar(EXPR)" 8 3
EXPR ����Ū�˥�����Υ���ƥ����ȤDz�ᤵ���ơ�EXPR ���ͤ��֤��ޤ���
.Ip "seek(FILEHANDLE,POSITION,WHENCE)" 8 3
FILEHANDLE �Υݥ��󥿤����� stdio �� fseek() �Τ褦��Ǥ�դ�
���֤ˤ��ޤ���
FILEHANDLE �ϡ��ե�����ϥ�ɥ��̾����Ϳ���뼰�Ǥ⤫�ޤ��ޤ���
��������� 1 �򡢼��Ԥ���� 0 ���֤��ޤ���
.Ip "seekdir(DIRHANDLE,POS)" 8 3
DIRHANDLE �ˤĤ��� readdir() ���ɤ฽�߰��֤򥻥åȤ��ޤ���
POS �ϡ�telldir() ���֤��ͤǤʤ���Фʤ�ޤ���
�������륷���ƥ�饤�֥��롼����Ʊ�͡�directory compaction �ˤĤ���
��Ʊ�����դ�ɬ�פǤ���
.Ip "select(FILEHANDLE)" 8 3
.Ip "select" 8 3
���� select ���줿�ե�����ϥ�ɥ���֤��ޤ���
FILEHANDLE ��Ϳ������ȡ������Ѥθ��ߤΥǥե���ȥե�����ϥ�ɥ��
���åȤ��ޤ���
����ˤ���Ĥθ��̤�����ޤ�����Ĥϡ��ե�����ϥ�ɥ��̵��
.I write
��
.I print
�����ǥե���ȤǤ��� FILEHANDLE �˹Ԥʤ���Ȥ������ȤǤ���
����ܤϡ����Ϥ˴�Ϣ�����ѿ����Ȥ������ν��ϥ����ͥ�򻲾Ȥ���
�Ȥ������ȤǤ���
�㤨�С�form �ե����ޥåȤ���Ƭ�򡢰�İʾ�ν��ϥ����ͥ��
���åȤ��ʤ���Фʤ�ʤ��Ȥ������Τ褦�ˤ�����ɤ��Ǥ��礦:
.nf

.ne 4
	select(REPORT1);
	$^ = \'report1_top\';
	select(REPORT2);
	$^ = \'report2_top\';

.fi
FILEHANDLE �ϡ��ºݤΥե�����ϥ�ɥ��̾����Ϳ���뼰�Ǥ⤫�ޤ��ޤ���
���Τ褦��:
.nf

	$oldfh = select(STDERR); $| = 1; select($oldfh);

.fi
.Ip "select(RBITS,WBITS,EBITS,TIMEOUT)" 8 3
����ϡ��ӥåȥޥ�������ꤷ�� select �����ƥॳ�����ƤӽФ����ޤ���
�ӥåȥޥ����ϡ��ʲ��Τ褦�� fileno() �� vec() ��Ȥäƺ�������ޤ���
.nf

	$rin = $win = $ein = '';
	vec($rin,fileno(STDIN),1) = 1;
	vec($win,fileno(STDOUT),1) = 1;
	$ein = $rin | $win;

.fi
��������Υե�����ϥ�ɥ�� select �������Ȥ��ϡ����֥롼�����񤤤�
�����ɤ����⤷��ޤ���
.nf

	sub fhbits {
	    local(@fhlist) = split(' ',$_[0]);
	    local($bits);
	    for (@fhlist) {
		vec($bits,fileno($_),1) = 1;
	    }
	    $bits;
	}
	$rin = &fhbits('STDIN TTY SOCK');

.fi
�̾�λȤ����ϡ�
.nf

	($nfound,$timeleft) =
	  select($rout=$rin, $wout=$win, $eout=$ein, $timeout);

�ޤ��������� ready �Ȥʤ�ޤǥ֥��å����Ƥ����ˤϡ������ʤ�ޤ���

.ie t \{\
	$nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef);
'br\}
.el \{\
	$nfound = select($rout=$rin, $wout=$win,
				$eout=$ein, undef);
'br\}

.fi
�ӥåȥޥ����Ϥɤ�� undef �ˤ�Ǥ��ޤ���
TIMEOUT ���äǻ��ꤵ�졢���������Ǥ⤫�ޤ��ޤ���
����: ���٤Ƥμ����� $timeleft ���֤���櫓�ǤϤ���ޤ���
�Ǥ��ʤ���硢���Ϳ����줿 $timeout ���������ͤ� $timeleft ��
�֤��ޤ���
.Ip "semctl(ID,SEMNUM,CMD,ARG)" 8 4
System V IPC �ؿ��� semctl ��ƤӽФ��ޤ��� CMD �� &IPC_STAT ��
&GETALL �ʤ顢ARG ���֤ä��褿 semid_ds ��¤�Τ������ޥե��������
�ݻ������ѿ��Ǥʤ���Фʤ�ޤ���
ioctl Ʊ�͡����顼�ξ�� undefined �ͤ���0 �ξ�� "0 but true" ����
����ʳ��ξ��ºݤ�����ͤ��֤���ޤ���
.Ip "semget(KEY,NSEMS,SIZE,FLAGS)" 8 4
System V IPC �ؿ� semget ��ƤӽФ��ޤ������ޥե� id ���֤������顼��
���� undefined �ͤ��֤��ޤ���
.Ip "semop(KEY,OPSTRING)" 8 4
�����ʥ�� wait �Τ褦�ʥ��ޥե�����¹Ԥ��� System V IPC �ؿ� semop
��ƤӽФ��ޤ���
OPSTRING �ϡ�semop ��¤�Τ� pack ���줿����Ǥʤ���Фʤ�ޤ���
�� semop ��¤�Τ� \&'pack("sss", $semnum, $semop, $semflag)' ��
�����Ǥ��ޤ������ޥե����ο��ϡ�OPSTRING ��Ĺ���ˤ��ޤ���
��������ȿ��򡢥��顼�Ǥϵ����֤��ޤ�����Ȥ��ơ��ʲ��Υ����ɤǤ�
���ޥե� id $semid �Υ��ޥե� $semnum ���Ԥ��ޤ���
.nf

	$semop = pack("sss", $semnum, -1, 0);
	die "Semaphore trouble: $!\en" unless semop($semid, $semop);

.fi
���ޥե��˥����ʥ������ˤϡ�"-1" �� "1" �ˤ��ޤ���
.Ip "send(SOCKET,MSG,FLAGS,TO)" 8 4
.Ip "send(SOCKET,MSG,FLAGS)" 8
�����åȤ˥�å�����������ޤ���
Ʊ̾�Υ����ƥॳ�����Ʊ���ե饰���Ѥ��ޤ���
��³����Ƥ��ʤ������åȤǤϡ�������� TO �Ȥ��ƻ��ꤷ�ʤ����
�ʤ�ޤ������ä�ʸ�������֤��ޤ������顼�ξ��� undefined �ͤ�
�֤��ޤ���
.Ip "setpgrp(PID,PGRP)" 8 4
���ꤷ�� PID �Υ����ȥץ��������롼�פ򥻥åȤ��ޤ��� PID �ϡ�
�����ȥץ������Ǥ� 0 �Ǥ���
setpgrp(2) ����������Ƥ��ʤ��ޥ���Ǥϡ���̿Ū���顼�Ȥʤ�ޤ���
.Ip "setpriority(WHICH,WHO,PRIORITY)" 8 4
�ץ��������ץ��������롼�ס��桼���Υ����ȥץ饤����ƥ���
���åȤ��ޤ��� (setpriority(2) �򻲾Ȥ��Ʋ�������)
setpriority(2) ����������Ƥ��ʤ��ޥ���Ǥϡ���̿Ū���顼�ˤʤ�ޤ���
.Ip "setsockopt(SOCKET,LEVEL,OPTNAME,OPTVAL)" 8 3
�ꥯ�����Ȥ��줿�����åȥ��ץ����򥻥åȤ��ޤ���
���顼�Ǥ� undefined ���֤��ޤ���
�������Ϥ������Τ�̵����С�OPTVAL �� undef �ͤ���ꤷ�Ƥ�
���ޤ��ޤ���
.Ip "shift(ARRAY)" 8 6
.Ip "shift ARRAY" 8
.Ip "shift" 8
����κǽ�����Ǥ����󤫤�������������Ǥ��֤��ޤ���
����� 1 ����û���ʤꡢ¾�Τ��٤Ƥ����ǤϤ���ޤ���
��������Ǥ��ʤ��Ȥ��ϡ�undefined �ͤ��֤��ޤ���
ARRAY ���ά����ȡ��ᥤ��ץ������Ǥ� @ARGV ����� shift ����
���֥롼����Ǥ� @_ ����� shift ���ޤ���
(����ϡ�����Ū�˷����Ƥ��ޤ�)
unshift(), push(), pop() �򻲾Ȥ��Ʋ�������
shift() �� unshift() �ϡ�push() �� pop() ������α�ü�˹Ԥʤ��Τ�
Ʊ�����Ȥ�����κ�ü�ǹԤʤ��ޤ���
.Ip "shmctl(ID,CMD,ARG)" 8 4
System V IPC �ؿ� shmctl ��ƤӽФ��ޤ��� CMD �� &IPC_STAT �ΤȤ���
ARG �ϡ��֤��줿 shmid_ds ��¤�Τ��ݻ������ѿ��Ǥʤ��ƤϤʤ�ޤ���
ioctl Ʊ�ͤ�����ͤ��֤��ޤ������顼�Ǥ� undefined �ͤ�0 �Ǥ�
"0 but true" �򡢤���ʳ��Ǥϼºݤ��ͤ��֤��ޤ���
.Ip "shmget(KEY,SIZE,FLAGS)" 8 4
System V IPC �ؿ� shmget ��ƤӽФ��ޤ���
��ͭ����Υ������� id ���֤��ޤ������顼�Ǥϡ�undefined �ͤ�
�֤��ޤ���
.Ip "shmread(ID,VAR,POS,SIZE)" 8 4
.Ip "shmwrite(ID,STRING,POS,SIZE)" 8
Syste V �ζ�ͭ���ꥻ������ ID �򡢰��� POS ����Ϥޤ�
������ SIZE �ˤ� attach ����copy in/out ����detach ���뤳�Ȥǡ��ɤ߹���
�Ƚ񤭹��ߤ�Ԥʤ��ޤ���
�ɤ߹��߻���VAR ���ɤޤ줿�ǡ������ݻ������ѿ��Ǥʤ����
�ʤ�ޤ��󡣽񤭹��߻��ˡ�STRING ��Ĺ�᤮��ȡ�SIZE �Х��Ȥ�����
�Ȥ��ޤ���STRING ��û�᤮��ȡ�SIZE �Х��Ȥ�����Τ˥̥뤬
�񤭹��ޤ�ޤ�����������ȿ��򡢥��顼�Ǥϵ����֤��ޤ���
.Ip "shutdown(SOCKET,HOW)" 8 3
�����å���³�� HOW �ǻؼ����줿ή���˽��äƥ���åȥ����󤷤ޤ���
Ʊ̾�Υ����ƥॳ�����Ʊ�ͤ� HOW ���ᤷ�ޤ���
.Ip "sin(EXPR)" 8 4
.Ip "sin EXPR" 8
EXPR (�饸�����ɽ��) �Υ�������֤��ޤ���
EXPR ���ά����� $_ �Υ��������ޤ���
.Ip "sleep(EXPR)" 8 6
.Ip "sleep EXPR" 8
.Ip "sleep" 8
EXPR �ô֥�����ץȤ�ߤ�ޤ��� EXPR ���ʤ���бʵפ˻ߤ�ޤ���
�ץ������� SIGALRM �����뤳�Ȥǡ������ޤ�ޤ���
�ºݤ� sleep �����ÿ����֤��ޤ���
sleep() �ϡ����Ф��� alarm() ��ȤäƼ�������Ƥ���Τǡ������餯
alarm() �� sleep() �� ���ߤ����뤳�ȤϤǤ��ʤ��Ǥ��礦��
.Ip "socket(SOCKET,DOMAIN,TYPE,PROTOCOL)" 8 3
���ꤵ�줿����Υ����åȤ򥪡��ץ󤷤ơ��ե�����ϥ�ɥ� SOCKET ��
��ӤĤ��ޤ���
DOMAIN, TYPE, PROTOCOL �ϡ�Ʊ̾�Υ����ƥॳ�����Ʊ�ͤ˻��ꤷ�ޤ���
perl �饤�֥��ե����뤫���ñ��Ŭ�����ͤ�����ˤϡ�h2ph �� 
sys/soket.h ���Ф��Ƽ¹Ԥ���ɬ�פ����뤫�⤷��ޤ���
��������ȿ����֤��ޤ���
�ץ��������̿��Υ�����������򻲾Ȥ��Ʋ�������
.Ip "socketpair(SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL)" 8 3
���ꤵ�줿�ɥᥤ��λ��ꤵ�줿���ǡ�̵̾�Υ����åȥڥ����������ޤ���
DOMAIN, TYPE, PROTOCOL �ϡ�Ʊ̾�Υ����ƥॳ�����Ʊ���褦�˻��ꤷ�ޤ��� 
��������Ƥ��ʤ����ϡ���̿Ū���顼�Ȥʤ�ޤ���
��������ȿ����֤��ޤ���
.Ip "sort(SUBROUTINE LIST)" 8 9
.Ip "sort(LIST)" 8
.Ip "sort SUBROUTINE LIST" 8
.Ip "sort BLOCK LIST" 8
.Ip "sort LIST" 8
LIST �򥽡��Ȥ��������ȺѤߤ������ͤ��֤��ޤ���
¸�ߤ��ʤ������ͤϡ�����ޤ���
SUBROUTINE �� BLOCK ����ά�����ȡ�ɸ��Ū��ʸ������Ӥˤ���ǥ�����
���ޤ���
0 ��꾮����������0 ��0 ����礭���������֤��褦�� SUBROUTINE ��̾��
����ꤹ��ȡ���������Ǥ��¤����˽��äƽ���¤�ľ���ޤ���
(<=> �� cmp �黻�Ҥϡ����Τ褦�ʥ롼����Ǥ����������Ǥ�)
SUBROUTINE �ϡ��������ѿ�̾�Ǥ⤫�ޤ��ޤ��󡣤����ͤȤ��ƻ��Ѥ���
���֥롼�����̾�������äƤ�����ɤ��ΤǤ���
SUBROUTINE ̾������ˡ�BLOCK ����ꤷ�ơ�
̵̾�Υ���饤�󥽡��ȥ��֥롼����Ȥ����Ѥ��뤳�Ȥ�Ǥ��ޤ���
.Sp
��Ψ���ɤ����뤿�ᡢ�̾�Υ��֥롼����ƤӽФ������ɤ�Х��ѥ����Ƥ��ޤ���
���Τ��ᡢ���Τ褦�ʱƶ�������ޤ���
���֥롼����ϺƵ�Ū�Ǥ��äƤϤʤ餺��
��Ӥ���� 2 ���Ǥ� @_ ��𤷤ƤǤϤʤ���$a �� $b ��𤷤�
���֥롼������Ϥ���ޤ��� (�ʲ�����򻲾Ȥ��Ʋ�������)
�����ϻ����Ϥ��ʤΤǡ�$a �� $b ���ѹ����ƤϤ����ޤ���
.Sp
��:
.nf

.ne 2
	# ����������
	@articles = sort @files;

.ne 2
	# Ʊ����Τ���������Ū�ʥ����ȥ롼����
	@articles = sort {$a cmp $b} @files;

.ne 2
	# Ʊ����Τ����ս�
	@articles = sort {$b cmp $a} @files;

.ne 2
	# ����Ū�˾���ǥ�����
	@articles = sort {$a <=> $b} @files;

.ne 2
	# ����Ū�˹߽�ǥ�����
	@articles = sort {$b <=> $a} @files;

.ne 5
	# ����Ū�˥��֥롼����̾��Ȥä�������
	sub byage {
	    $age{$a} <=> $age{$b};	# �����Ȳ���
	}
	@sortedclass = sort byage @class;

.ne 9
	sub reverse { $b cmp $a; }
	@harry = (\'dog\',\'cat\',\'x\',\'Cain\',\'Abel\');
	@george = (\'gone\',\'chased\',\'yz\',\'Punished\',\'Axed\');
	print sort @harry;
		# AbelCaincatdogx �Ƚ���
	print sort reverse @harry;
		# xdogcatCainAbel �Ƚ���
	print sort @george, \'to\', @harry;
		# AbelAxedCainPunishedcatchaseddoggonetoxyz �Ƚ���

.fi
.Ip "splice(ARRAY,OFFSET,LENGTH,LIST)" 8 8
.Ip "splice(ARRAY,OFFSET,LENGTH)" 8
.Ip "splice(ARRAY,OFFSET)" 8
���󤫤� OFFSET �� LENGTH �ǻ��ꤵ�줿���Ǥ������LIST �����Ǥ�
�����ؤ��ޤ���
���󤫤�����줿���Ǥ��֤��ޤ���
�����ɬ�פ˱����ƿ��̤���ޤ���
LENGTH ���ά����ȡ�OFFSET ������Ϥ��٤ƽ�����ޤ���
�ʲ��ϳ�Ʊ���Ȥʤ�ޤ��� ($[ == 0 �Ǥ���Ȳ��ꤷ�����)
.nf

	push(@a,$x,$y)\h'|3.5i'splice(@a,$#a+1,0,$x,$y)
	pop(@a)\h'|3.5i'splice(@a,-1)
	shift(@a)\h'|3.5i'splice(@a,0,1)
	unshift(@a,$x,$y)\h'|3.5i'splice(@a,0,0,$x,$y)
	$a[$x] = $y\h'|3.5i'splice(@a,$x,1,$y);

������Ǥϡ�����Ĺ������������Ϥ����Ȳ��ꤷ�Ƥ��ޤ�:
	
	sub aeq {	# compare two array values
		local(@a) = splice(@_,0,shift);
		local(@b) = splice(@_,0,shift);
		return 0 unless @a == @b;	# Ʊ��Ĺ��?
		while (@a) {
		    return 0 if pop(@a) ne pop(@b);
		}
		return 1;
	}
	if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... }

.fi
.Ip "split(/PATTERN/,EXPR,LIMIT)" 8 8
.Ip "split(/PATTERN/,EXPR)" 8 8
.Ip "split(/PATTERN/)" 8
.Ip "split" 8
ʸ�����ʸ����������ʬ���ơ�����������֤��ޤ���
(����Υ���ƥ����ȤǤϤʤ���硢���Ĥ��ä��ե�����ɤο����֤���
split ������Τ� @_ ���������ޤ���
(����Υ���ƥ����ȤǤϡ��ѥ�������ڤ�Ȥ��� ?? ��Ȥ����ȤǶ���Ū��
@_ �� split �������ޤ���������Ǥ������ͤ��֤��ޤ���))
EXPR ���ά����ȡ�$_ ʸ����� split ���ޤ���
PATTERN ���ά����ȡ�����ʸ�� (/[\ \et\en]+/) �� split ���ޤ���
PATTERN �˥ޥå������Τϲ��Ǥ�ե�����ɤ�ʬ������ڤ�Ȳ�ᤵ��ޤ���
(���ڤ�� 1 ʸ�����Ĺ���Ƥ�褤���Ȥ����դ��Ʋ�������)
LIMIT �����ꤵ���ȡ������ۤ��ʤ����� split ����ޤ� (���ʤ�����
����ޤ�) ��
LIMIT �����ꤵ��ʤ��ȡ����³���̥�ե�����ɤϽ�����ޤ� 
(pop()��Ȥ��ͤ��ɤ��Ф��Ƥ����������褤�Ǥ��礦) ��
�̥�ʸ���˥ޥå�����ѥ����� (�̥�ѥ����� // �Ⱥ�Ʊ���ʤ��Dz������� 
// �ϥ̥�ʸ���˥ޥå�����ѥ�����ΰ�Ĥˤ����ޤ���) �ϡ�
�ޥå����뤹�٤Ƥ����� EXPR ���ʸ�����Ĥ� split ���ޤ���
�㤨��:
.nf

	print join(\':\', split(/ */, \'hi there\'));

.fi
�ϡ�\*(L'h:i:t:h:e:r:e\*(R' ����Ϥ��ޤ���
.Sp
LIMIT �ѥ�᡼���ϡ��Ԥ���ʬŪ�� split ���뤳�Ȥ˻Ȥ��ޤ���
.nf

	($login, $passwd, $remainder) = split(\|/\|:\|/\|, $_, 3);

.fi
(�ꥹ�Ȥ���������Ȥ���LIMIT ����ά����Ƥ���� perl ����ɬ�פ�ư���
�򤱤뤿��˥ꥹ�Ȥ��ѿ��ο�������礭�� LIMIT ��Ϳ���ޤ���
�嵭�Υꥹ�ȤǤ� LIMIT �ϥǥե���Ȥ� 4 ���ä��Ϥ��Ǥ���
���֤����¤Τ��륢�ץꥱ�������Ǥϡ�������ɬ�פʿ��ʾ�Υե�����ɤ�
�� split ���ʤ��褦�ˤ��٤��Ǥ���)
.Sp
PATTERN ����̤�ޤ�Ȥ��ϡ����ڤ�Ȥ��ƥޥå�����ʸ����ˤ�ꡢ
�����������Ǥ���������ޤ���
.Sp
	split(/([,-])/,"1-10,20");
.Sp
�ϰʲ��������ͤ���ޤ���
.Sp
	(1,'-',10,',',20)
.Sp
�ѥ����� /PATTERN/ �ϡ��¹Ի����Ѥ��ѥ��������ꤹ�뼰��
�֤�������ǽ�Ǥ���
(�¹Ի�����ѥ������ˤ�������С�/$variable/o ��ȤäƲ�������)
���̤ʥ������Ȥ��ƶ��� (\'\ \') ����ꤹ��ȡ�����̵���� split ����
����Ʊ�ͤǤ�������Ƭ�˶��򤬤��äƤ�̥�ե�����ɤϺ���ޤ���
�Ĥޤ� split(\'\ \') �ϡ�
.IR awk
�Υǥե���Ȥ�ư��򥨥ߥ�졼�Ȥ��뤳�Ȥ��Ǥ���櫓�ǡ�split(/\ /) 
����Ƭ�˶��򤬤���ȡ��ǽ�ˤ��ο������̥�ե�����ɤ���ޤ���
.Sp
��:
.nf

.ne 5
	open(passwd, \'/etc/passwd\');
	while (<passwd>) {
.ie t \{\
		($login, $passwd, $uid, $gid, $gcos, $home, $shell) = split(\|/\|:\|/\|);
'br\}
.el \{\
		($login, $passwd, $uid, $gid, $gcos, $home, $shell)
			= split(\|/\|:\|/\|);
'br\}
		.\|.\|.
	}

.fi
(������ $shell �ϲ���ʸ����ޤߤޤ��� chop() �򻲾Ȥ��Ʋ�������)
.IR join
�򻲾Ȥ��Ʋ�������
.Ip "sprintf(FORMAT,LIST)" 8 4
�̾�� printf �Ѵ��ǥե����ޥåȤ����ʸ������֤��ޤ���
* ʸ���ϥ��ݡ��Ȥ���Ƥ��ޤ���
.Ip "sqrt(EXPR)" 8 4
.Ip "sqrt EXPR" 8
EXPR ��ʿ�������֤��ޤ���
EXPR ���ά����ȡ�$_ ��ʿ�������֤��ޤ���
.Ip "srand(EXPR)" 8 4
.Ip "srand EXPR" 8
.I rand
�黻�ҤΤ���ˡ�����Ѥ� seed �򥻥åȤ��ޤ���
EXPR ���ά����ȡ�srand(time) ��¹Ԥ��ޤ���
.Ip "stat(FILEHANDLE)" 8 8
.Ip "stat FILEHANDLE" 8
.Ip "stat(EXPR)" 8
.Ip "stat SCALARVARIABLE" 8
EXPR �Ȥ���̾���Υե������ FILEHANDLE �ǥ����ץ󤵤줿�ե������
����򼨤� 13 ���Ǥ�������֤��ޤ���
stat �����Ԥ���ȥ̥�ꥹ�Ȥ��֤��ޤ���
���̼��Τ褦�˻Ȥ��ޤ�:
.nf

.ne 3
    ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
       $atime,$mtime,$ctime,$blksize,$blocks)
           = stat($filename);

.fi
stat ���ü�ե�����ϥ�ɥ� _ ���Ϥ��ȡ�stat �ϼ¹Ԥ��줺�Ǹ��
�Ԥʤ�줿 stat ��ե�����ƥ��ȤǻȤ�줿 stat ��¤�Τ����Ƥ�
�֤��ޤ���
��:
.nf

.ne 3
	if (-x $file && (($d) = stat(_)) && $d < 0) {
		print "$file is executable NFS file\en";
	}

.fi
(������ϡ�NFS ���ǥǥХ����ֹ椬��ˤʤ�ޥ���ǤΤ�ư��ޤ���)
.Ip "study(SCALAR)" 8 6
.Ip "study SCALAR" 8
.Ip "study"
SCALAR (���ꤷ�ʤ���� $_) �ˤĤ��ơ����줬�����ѹ����������¿����
�ѥ�����ޥå���ͽ�ۤ��Ƥ��餫����Ԥ��ޤ���
�����򤹤�ѥ������������������������ʸ�������ʸ���νи�����ʬ��
�ˤ�äƤϡ����֤�����Ǥ��뤫�⤷��ޤ��󤷡��Ǥ��ʤ����⤷��ޤ���
\*(--¿ʬ�����Ȥä����ȻȤ�ʤ����ǡ��¹Ի��ɤ��餬®������
��٤Ƥߤ����Ǥ��礦�����������û�����ʸ����(���ʣ���ʥѥ������
�������ޤ�)�򥹥���󤹤�롼�פǺǤⲸ�äˤ��������Ǥ��礦��
���٤˰�Ĥ� study �������̤�����ޤ���\*(--�̤Υ������ study 
����ȡ���� study ������Τ� \*(L"unstudied\*(R" �ȤʤäƤ��ޤ��ޤ���
(study ��ư��λ����ϼ����̤�Ǥ�: ���������ʸ����Τ��٤Ƥ�ʸ����
��󥯥ꥹ�Ȥ���ޤ�������������㤨�С��ɤ��� \*(L'k\*(R' ��ʸ����
���뤫�����٤Ƥ狼��櫓�Ǥ��������Ĥ��� C �Υץ������ȱ�ʸ����
�������줿��������ɽ�˴�Ť����Ƹ���ʸ���ˤĤ��ơ��Ǥ����٤����ʤ�
ʸ�������Ӥޤ������� \*(L"���٤����ʤ�\*(R" ʸ����Ĵ�٤�ΤǤ���)
.Sp
������ϡ�����ѥ������ޤह�٤ƤιԤ����˥���ǥå�����ޤ२��ȥ��
�������ޤ�:
.nf

.ne 8
	while (<>) {
		study;
		print ".IX foo\en" if /\ebfoo\eb/;
		print ".IX bar\en" if /\ebbar\eb/;
		print ".IX blurfl\en" if /\ebblurfl\eb/;
		.\|.\|.
		print;
	}

.fi
/\ebfoo\eb/ �򸡺�����Ȥ���\*(L'f\*(R' �� \*(L'o\*(R' �������٤�
���ʤ����ᡢ$_ ����� \*(L'f\*(R' ��ޤ���֤�õ����ޤ���
���̤ˡ���Ū�ʾ�������ơ���������ˤ��ޤ������ޤ���
ͣ�졢�ǽ�λ����ǥ�󥯥ꥹ�Ȥ�������뤿��ˤ�����ʾ��
���֤�����Ǥ��뤫������ˤʤ�ޤ���
.Sp
�¹Ԥ���ޤDz��ʤ�ʸ����򸡺����ʤ���Фʤ�ʤ���硢���롼�פ�
��Ĥ�ʸ����Ȥ��Ʋ��Ϥ� eval ���뤳�Ȥǡ����٤ƤΥѥ���������
�ƥ���ѥ��뤹��Τ��򤱤뤳�Ȥ��Ǥ��뤳�Ȥ�Ф��Ƥ����ޤ��礦��
����˲ä������ե����뤬 1 �쥳���ɤˤʤ�褦�� $/ �� undef ����ȡ�
����®���ʤꡢfgrep �Τ褦���ü첽�����ץ��������®���ʤ뤳�Ȥ�
¿���Ǥ���
�ʲ�����ϡ��ե�����Υꥹ�� (@files) ��ñ��Υꥹ�� (@words) ��
���������ޥå�����ե�����̾����Ϥ��ޤ�:
.nf

.ne 12
	$search = \'while (<>) { study;\';
	foreach $word (@words) {
	    $search .= "++\e$seen{\e$ARGV} if /\e\eb$word\e\eb/;\en";
	}
	$search .= "}";
	@ARGV = @files;
	undef $/;
	eval $search;		# �����(������­��)�㤭����
	$/ = "\en";		# ���̤����϶��ڤ���᤽��
	foreach $file (sort keys(%seen)) {
	    print $file, "\en";
	}

.fi
.Ip "substr(EXPR,OFFSET,LEN)" 8 2
.Ip "substr(EXPR,OFFSET)" 8 2
EXPR ������ʬʸ�������Ф���������֤��ޤ���
$[ �򥻥åȤ��ʤ��¤ꡢ�ǽ��ʸ���ϥ��ե��å� 0 �Ǥ���
OFFSET ������ȡ�ʸ����ν��꤫�� OFFSET ����Υ�줿���֤���Ϥ�ޤ���
LEN ���ά����ȡ���ü�ޤǤΤ��٤Ƥ�ʸ������֤��ޤ���
substr() �ؿ��Ϻ����ͤȤ��Ƥ�Ȥ��ޤ������ξ�� EXPR �Ϻ�����
�Ǥʤ��ƤϤʤ�ޤ���
LEN ���û����Τ���������ȡ�ʸ�����û���ʤꡢĹ����Τ����������
�����ޤ����褦��Ĺ���ʤ�ޤ���
ʸ�����Ʊ��Ĺ�����ݤĤ���ˤϡ�sprintf() ��Ȥäƥѥǥ��󥰤ޤ���
�ڤ�ΤƤ򤷤ʤ���Фʤ�ʤ����⤷��ޤ���
.Ip "symlink(OLDFILE,NEWFILE)" 8 2
OLDFILE �ؤΥ���ܥ�å���� NEWFILE ��������ޤ���
��������� 1 �򡢼��Ԥ���� 0 ���֤��ޤ���
����ܥ�å���󥯤򥵥ݡ��Ȥ��ʤ������ƥ�Ǥϡ��¹Ի�����̿Ū���顼
�Ȥʤ�ޤ���
���������å�����ˤϡ�eval ��Ȥ��ޤ�:
.nf

	$symlink_exists = (eval \'symlink("","");\', $@ eq \'\');

.fi
.Ip "syscall(LIST)" 8 6
.Ip "syscall LIST" 8
�ꥹ�Ȥκǽ�����Ǥǻ��ꤵ�줿��Τˡ��Ĥ�����Ǥ�����Ȥ����դ��ơ�
�����ƥॳ�����ƤӽФ��ޤ��� 
��������Ƥ��ʤ�����̿Ū���顼�Ȥʤ�ޤ���
�����ϼ��Τ褦�˲�ᤵ��ޤ�: Ϳ����줿�����������ʤ顢������
�����Ȥ����Ϥ���ޤ��������Ǥʤ���С�ʸ����ؤΥݥ��󥿤��Ϥ���ޤ���
��̤���������褦�ˡ��񤭹��ޤ��٤�ʸ�����ʬĹ�����Ƥ����Τϡ�
���ʤ�����Ǥ�Ǥ���
�����ΰ�������ƥ��Ǥʤ�������ޤǿ����Υ���ƥ����ȤDz�ᤵ���
���ʤ��ä���Τʤ顢����Ū�˿����˸�����褦�ˡ�
0 ��­��ɬ�פ����뤫�⤷��ޤ���
.nf

	# h2ph ��¹Ԥ��Ƥ���ɬ�פ����뤫�⤷��ޤ���
	require 'syscall.ph';
	syscall(&SYS_write, fileno(STDOUT), "hi there\en", 9);

.fi
.Ip "sysread(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5
.Ip "sysread(FILEHANDLE,SCALAR,LENGTH)" 8 5
�����ƥॳ���� read(2) ��Ȥäơ����ꤷ�� FILEHANDLE ����
LENGTH �Х��ȤΥǡ������ɤ߹��ߡ��ѿ� SCALAR �˳�Ǽ���ޤ���
�����ɸ�������Ϥ��ͳ���ʤ��Τǡ�read �Ⱥ��ߤ��ƻȤ��ȡ�
���𤹤뤫�⤷��ޤ���
�ºݤ��ɤ߹��ޤ줿�Х��ȿ����֤��ޤ������顼�ξ��� undef ���֤��ޤ���
SCALAR �ϼºݤ��ɤ߹��ޤ줿Ĺ���ˤ�äƿ��̤��ޤ���
ʸ����λϤ�Ǥʤ�����˥ǡ������Ǽ����褦�ˡ�OFFSET �����Ǥ��ޤ���
.Ip "system(LIST)" 8 6
.Ip "system LIST" 8
\*(L"exec LIST\*(R" ������Ʊ�����Ȥ�Ԥʤ��ޤ������㤤�Ϻǽ�� fork ��
�¹Ԥ���ơ��ƥץ������ϻҥץ���������λ����Τ��ԤĤ��ȤǤ���
�����ν����ϡ������ο��ˤ�ä��Ѥ�뤳�Ȥ����դ��Ʋ�������
����ͤϡ�wait() ���֤�ץ������ν�λ�����ơ������ˤʤ�ޤ���
�ºݤν�λ�����ơ�����������ˤϡ�256 �dz�äƲ�������
.IR exec
�򻲾ȡ�
.Ip "syswrite(FILEHANDLE,SCALAR,LENGTH,OFFSET)" 8 5
.Ip "syswrite(FILEHANDLE,SCALAR,LENGTH)" 8 5
�����ƥॳ���� write(2) ��Ȥäơ����ꤷ�� FILEHANDLE ��
�ѿ� SCALAR ���� LENGTH �Х��ȤΥǡ�����񤭹��ߤޤ���
�����ɸ�������Ϥ��ͳ���ʤ��Τǡ�print �Ⱥ��ߤ��ƻȤ��ȡ�
���𤹤뤫�⤷��ޤ���
�ºݤ˽񤭹��ޤ줿�Х��ȿ����֤��ޤ������顼�ξ��� undef ���֤��ޤ���
OFFSET �ǡ�ʸ����λϤ�Ǥʤ����椫��ǡ������ɤ�褦�˻���Ǥ��ޤ���
.Ip "tell(FILEHANDLE)" 8 6
.Ip "tell FILEHANDLE" 8 6
.Ip "tell" 8
FILEHANDLE �θ��ߤΥե�������֤��֤��ޤ���
FILEHANDLE �ϡ��ºݤΥե�����ϥ�ɥ��̾����Ϳ���뼰�Ǥ⤫�ޤ��ޤ���
FILEHANDLE ���ά����ȡ��Ǹ���ɤ���ե������Ȥ��ޤ���
.Ip "telldir(DIRHANDLE)" 8 5
.Ip "telldir DIRHANDLE" 8
DIRHANDLE �ˤĤ��� readdir() �롼����θ��ߤΰ��֤��֤��ޤ���
�����ͤϡ��ǥ��쥯�ȥ������ΰ��֤򥢥��������뤿��ˡ�seekdir() ��
�����˻Ȥ��ޤ���
�������륷���ƥ�饤�֥��롼����Ʊ�͡�directory compaction �ˤĤ���
��Ʊ�����դ�ɬ�פǤ���
.Ip "time" 8 4
1970 ǯ 1 �� 1 �� 00:00:00 (UTC) ������̻����ÿ�(����̵��)���֤��ޤ���
gmtime() �� localtime() �˻Ȥ����Ȥ��Ǥ��ޤ���
.Ip "times" 8 4
���ߤΥץ������Ȼҥץ������Υ桼���������ƥ����(��)����ʤ� 4 ���Ǥ�
������֤��ޤ���
.Sp
    ($user,$system,$cuser,$csystem) = times;
.Sp
.Ip "tr/SEARCHLIST/REPLACEMENTLIST/cds" 8 5
.Ip "y/SEARCHLIST/REPLACEMENTLIST/cds" 8
SEARCHLIST �ˤ���ʸ�����и������顢���٤� REPLACEMENTLIST ����������
ʸ�����Ѵ����ޤ���
�Ѵ��ޤ��Ϻ�����줿ʸ���ο����֤��ޤ���
=~ �� !~ �黻�Ҥ�𤷤�ʸ����λ���򤷤ʤ��ä���硢$_ ʸ����
�Ѵ�����ޤ���
(=~ �ǻ��ꤷ��ʸ����ϡ��������ѿ�����������Ǥ������ؤ�����
�Ǥʤ���Ф����ޤ��󡣤Ĥޤꡢ�����ͤȤ������Ȥˤʤ�ޤ���)
.I sed
���ԤΤ���ˡ�
.I tr
����̾
.I y
���Ѱդ���Ƥ��ޤ���
SEARCHLIST �� [], <>, () �Ƕ��ڤ��Ƥ���ȡ�REPLACEMENTLIST �ϡ�
���켫�ȤΥ������Ȥ����������� [], <>, () �Ǥ��äƤ⡢�����Ǥʤ��Ƥ�
�ɤ����Ȥˤʤ�ޤ����㤨�С�
tr[A-Z][a-z] �ޤ��� tr(+-*/)/ABCD/ �Τ褦�ˤʤ�ޤ���
.Sp
c �����Ҥ����ꤵ���ȡ�SEARCHLIST ��ʸ�����åȤ���֤���ޤ���
d �����Ҥ����ꤵ���ȡ�SEARCHLIST �ǻ��ꤵ�줿ʸ���� REPLACEMENTLIST 
���б������Τ��ʤ���Τϳ����������ޤ���
(����ϡ�SEARCHLIST �Ǹ��Ĥ��ä���Τ򲿤Ǥ������Ƥ��ޤ�
�褦��
.I tr
�ץ������ε�ư���⡢������Ǥ���)
s �����Ҥ����ꤵ���ȡ��Ѵ������Ʊ��ʸ����³�����Ȥ���
����� 1 ʸ���˽̤�ޤ���
.Sp
d �����Ҥ��Ȥ���ȡ�REPLACEMENTLIST �Ͼ�˻��ꤵ�줿�̤��
��ᤵ��ޤ�������ʳ��ξ��ǡ�REPLACEMENTLIST �� SEARCHLIST ���
û���Ȥ��ϡ�Ʊ��Ĺ���ˤʤ�ޤǺǸ��ʸ���������֤���ޤ���
REPLACEMENTLIST ���̥���ȡ�SEARCHLIST �����ԡ�����ޤ���
����ϡ����륯�饹�˴ޤޤ��ʸ���򥫥���Ȥ����ꡢ���륯�饹��ʸ����
��ʣ��̤��Ȥ��������Ǥ���
.Sp
��:
.nf

    $ARGV[1] \|=~ \|y/A\-Z/a\-z/;	\h'|3i'# ��ʸ�������줷�ޤ�

    $cnt = tr/*/*/;		\h'|3i'# $_ ����� * ������ޤ�

    $cnt = tr/0\-9//;		\h'|3i'# $_ ����ο���������ޤ�

    tr/a\-zA\-Z//s;	\h'|3i'# bookkeeper \-> bokeper

    ($HOST = $host) =~ tr/a\-z/A\-Z/;

    y/a\-zA\-Z/ /cs;	\h'|3i'# ����ե��٥åȰʳ��� 1 ʸ���ζ���ˤ��ޤ�

    tr/\e200\-\e377/\e0\-\e177/;\h'|3i'# 8 �ӥå��ܤ�ä��ޤ�

.fi
.Ip "truncate(FILEHANDLE,LENGTH)" 8 4
.Ip "truncate(EXPR,LENGTH)" 8
FILEHANDLE �� EXPR ��̾���Υե��������ꤷ��Ĺ�����ڤ�ͤ�ޤ���
�����ƥ�� truncate ����������Ƥ��ʤ��ȡ���̿Ū���顼�ˤʤ�ޤ���
.Ip "umask(EXPR)" 8 4
.Ip "umask EXPR" 8
.Ip "umask" 8
�ץ������� umask �򥻥åȤ����ѹ������ͤ��֤��ޤ���
EXPR ����ά�����ȡ�ñ�˸��ߤ� umask ���֤��ޤ���
.Ip "undef(EXPR)" 8 6
.Ip "undef EXPR" 8
.Ip "undef" 8
EXPR ���ͤ� undefined �Ȥ��ޤ�������Ϻ����ͤǤʤ���Фʤ�ޤ���
�������͡��������Ρ����֥롼����̾ (& ��Ȥ�) �ξ��ǤΤ߻Ȥ��ޤ���
(undef �ϡ�¿ʬ�ۤȤ�ɤ�ͽ���ѿ���dbm �����ͤǤϴ��Ԥ���ư��Ȥʤ�ޤ���)
undef �ϡ���� undefined �ͤ��֤��ޤ���
EXPR ���ά���뤳�Ȥ�Ǥ��ޤ������ξ��ϲ��� undef ����ޤ��󤬡�
����Ǥ� undefined �ͤ����뤳�Ȥ��Ǥ��ޤ���
�㤨�С����֥롼���󤫤� return ����Ȥ��Ǥ���
��:
.nf

.ne 6
	undef $foo;
	undef $bar{'blurfl'};
	undef @ary;
	undef %assoc;
	undef &mysub;
	return (wantarray ? () : undef) if $they_blew_it;

.fi
.Ip "unlink(LIST)" 8 4
.Ip "unlink LIST" 8
�ꥹ�Ȥ˴ޤޤ��ե�����������ޤ���
��������������ե�����ο����֤��ޤ���
.nf

.ne 2
	$cnt = unlink \'a\', \'b\', \'c\';
	unlink @goners;
	unlink <*.bak>;

.fi
����: unlink �ϡ���ʬ�������ѥ桼����
.IR perl
��
.B \-U
�ե饰���դ��Ƥ����������ȥǥ��쥯�ȥ��õ�Ϥ��ޤ���
�����ξ�郎�����ä��Ȥ��Ƥ⡢�ǥ��쥯�ȥ�� unlink ��
�����ƥ�˥��᡼����Ϳ���뤳�Ȥ�����Τǡ�����Ĥ��Ʋ�������
����� rmdir ��ȤäƲ�������
.Ip "unpack(TEMPLATE,EXPR)" 8 4
unpack �� pack �εդ�Ԥʤ��ޤ�: ��¤�Τ򼨤�ʸ���������˼�ꡢ
����������ͤ˽��Ϥ��������ͤ��֤��ޤ���
(������Υ���ƥ����ȤǤϡ��������줿�ǽ���ͤΤߤ��֤��ޤ���)
TEMPLATE �ϡ�pack �ؿ�������Ʊ���ե����ޥåȤˤʤ�ޤ���
�ʲ��ϡ�substr ��¹Ԥ��륵�֥롼����Ǥ�:
.nf

.ne 4
	sub substr {
		local($what,$where,$howmuch) = @_;
		unpack("x$where a$howmuch", $what);
	}

.ne 3
�����ơ�

	sub ord { unpack("c",$_[0]); }

.fi
�Ȥ����Τ⤢��ޤ���
���ˡ��ե�����ɤ����� %<����> ��ź�����դ��뤳�Ȥˤ�ꡢ
���ܤ��Τ�Τ�����ˡ����ܤ�<����>�ӥåȤΥ����å����ब�ߤ�����
��������ˤʤ�ޤ���
�ǥե���Ȥϡ�16 �ӥåȤΥ����å�����Ǥ���
������ǡ�System V �� sum �ץ�������Ʊ�������׻�����ޤ�:
.nf

.ne 4
	while (<>) {
	    $checksum += unpack("%16C*", $_);
	}
	$checksum %= 65536;

.fi
.Ip "unshift(ARRAY,LIST)" 8 4
�����ˤ�äơ�
.IR shift
�εա��ޤ���
.IR push
�εդ�Ԥʤ��ޤ���
LIST ������������դ��ä�����������������Ǥο����֤��ޤ���
.nf

	unshift(ARGV, \'\-e\') unless $ARGV[0] =~ /^\-/;

.fi
.Ip "utime(LIST)" 8 2
.Ip "utime LIST" 8 2
�ꥹ�Ȥγƥե�����Υ�����������Ⱥǽ��ѹ�������Ѥ��ޤ���
�ꥹ�Ȥκǽ����Ĥ����Ǥˤϡ�*����*��ɽ���줿��������������ѹ����郎
���ν�����äƤ��ʤ���Фʤ�ޤ���
�ѹ������������ե�����ο����֤�ޤ���
�ƥե������ inode �ѹ�����ˤϸ��߻��֤����åȤ���ޤ���
�ʲ��ϡ�\*(L"touch\*(R" ���ޥ�ɤ���Ǥ�:
.nf

.ne 3
	#!/usr/bin/perl
	$now = time;
	utime $now, $now, @ARGV;

.fi
.Ip "values(ASSOC_ARRAY)" 8 6
.Ip "values ASSOC_ARRAY" 8
̾���դ�Ϣ������Τ��٤Ƥ��ͤ���ʤ����̤�������֤��ޤ���
�ͤϡ��������������ʽ���֤�褦�˸����ޤ�����Ʊ��Ϣ��������Ф��ơ�
keys() �ؿ� �� each() �ؿ������������Τ�Ʊ����ˤʤ�ޤ���
keys() �� each() �򻲾Ȥ��Ʋ�������
.Ip "vec(EXPR,OFFSET,BITS)" 8 2
ʸ����� unsigned integer �Υ٥��ȥ�Ȥ��ư��������ꤷ��
�ӥåȥե�����ɤ��ͤ��֤��ޤ���
������Ǥ��ޤ���
BITS�ϡ�2 ���߾�� 1 ���� 32 �ޤǤǤʤ���Фʤ�ޤ���
.Sp
vec() ���������줿�٥��ȥ�ϡ������黻�� |, &, ^ �����뤳�Ȥ��Ǥ���
ξ���Υ��ڥ��ɤ�ʸ����ΤȤ���
�ӥåȥ٥��ȥ�黻�򤹤��ΤȤߤʤ���ޤ���
�Ť��ץ��������뤿��ˡ��ץ��������˾��ʤ��Ȥ��Ĥ� vec() ��
�ʤ��ȡ����β��Ϥʤ���ޤ���
.Sp
�ӥåȥ٥��ȥ�� 0 �� 1 ��ʸ�����������Ѵ�����ˤϡ�
�ʲ���ȤäƲ�����:
.nf

	$bits = unpack("b*", $vector);
	@bits = split(//, unpack("b*", $vector));

.fi
�ӥåȤ����Τ�Ĺ�����狼��ʤ�С�* ������˻Ȥ����Ȥ��Ǥ��ޤ���
.Ip "wait" 8 6
�ҥץ���������λ����Τ��Ԥ��������ץ������� pid ���֤��ޤ���
�ҥץ��������ʤ��Ȥ��ϡ�-1 ���֤��ޤ���
��λ�����ơ������� $? ���֤���ޤ���
.Ip "waitpid(PID,FLAGS)" 8 6
����λҥץ���������λ����Τ��Ԥ��������ץ������� pid ���֤��ޤ���
���Τ褦�ʻҥץ��������ʤ���С�-1 ���֤��ޤ���
��λ�����ơ������� $? ���֤���ޤ���
���Τ褦�˽񤯤ȡ�
.nf

	require "sys/wait.h";
	.\|.\|.
	waitpid(-1,&WNOHANG);

.fi
�ɤΥץ��������Ф��Ƥ⡢non-blocking wait ��¹ԤǤ��ޤ���
non-blocking wait �ϡ�
.I waitpid (2)
�����ޤ���
.I wait4 (2)
�����ƥॳ����򥵥ݡ��Ȥ��Ƥ���ޥ���ǤΤ߻Ȥ��ޤ���
��������FLAGS 0 �Ǥ� �ü�� pid �� wait �Ϥɤ��Ǥ��������Ƥ��ޤ���
(perl �ϡ���λ������Τ� perl ������ץȤˤϺΤ�������Ƥ��ʤ�
�ץ������Υ��ơ������ͤ�Ф��Ƥ��뤳�Ȥǥ����ƥॳ����򥨥ߥ�졼��
���ޤ���)
.Ip "wantarray" 8 4
���߼¹Ԥ��Ƥ��륵�֥롼����Υ���ƥ����Ȥ������ͤʤ鿿���֤��ޤ���
������Υ���ƥ����Ȥ˸�����С������֤��ޤ���
.nf

	return wantarray ? () : undef;

.fi
.Ip "warn(LIST)" 8 4
.Ip "warn LIST" 8
\*(L"die\*(R" ��Ʊ���褦�ʥ�å�������ɸ�२�顼���Ϥ˽Ф��ޤ�����
��λ���ޤ���
.Ip "write(FILEHANDLE)" 8 6
.Ip "write(EXPR)" 8
.Ip "write" 8
���ꤷ���ե�����ˡ���Ϣ�դ���줿�ե����ޥåȤ�Ȥäơ�
�ե����ޥåȥ쥳���� (ʣ���Ԥ��) ��񤭹��ߤޤ���
�ǥե���Ȥǡ��ե����ޥåȤϥե�����ϥ�ɥ��Ʊ��̾������Ĥ�Τ�
�ʤ�ޤ�����$~ �ѿ��˥ե����ޥåȤ�̾��������Ū�˳�����Ƥ뤳�Ȥǡ�
���ߤν��ϥ����ͥ� (
.IR select 
�򻲾Ȥ��Ʋ�����) ���Ф���ե����ޥåȤ򥻥åȤ��Ƥ⤫�ޤ��ޤ���
.Sp
�Ǿ�̤� form �����ϼ�ưŪ�˹Ԥʤ��ޤ�:
�ե����ޥåȤ��줿�쥳���ɤ��Ф��ơ����ߤΥڡ����˽�ʬ�ʶ������ʤ�
��硢���Ǥ��񤭹��ޤ�ơ����Υڡ����˰ܤ�ޤ���
�������ڡ����Υإå��ˤϡ����̤ʥڡ�����Ƭ�ե����ޥåȤ��Ȥ�졢
���θ�쥳���ɤ��񤭹��ޤ�ޤ���
�ǥե���Ȥǥڡ�����Ƭ�ե����ޥåȤϡ�
�ե�����ϥ�ɥ��̾���� \*(L"_TOP\*(R" ���դ��ä�����Τˤʤ�ޤ�����
�ե�����ϥ�ɥ뤬 select ����Ƥ���Ȥ��ϡ�$^ �ѿ���̾���������Ƥ�
���Ȥǡ������ʥե����ޥåȤ�ưŪ�˥��åȤ��Ƥ⤫�ޤ��ޤ���
���ߤΥڡ����˻ĤäƤ���Կ��ϡ��ѿ� $- ���ݻ�����Ƥ��ޤ�����0 ��
���åȤ��뤳�Ȥ��ǡ�����Ū�˿������ڡ����˰ܤ뤳�Ȥ��Ǥ��ޤ���
.Sp
FILEHANDLE �����ꤵ��ʤ��ȡ����ߤΥǥե���Ƚ��ϥ����ͥ��
���Ϥ���ޤ����ǥե���Ƚ��Ϥϡ���ư��
.I STDOUT
�Ǥ�����
.I select
�黻�Ҥ��ѹ��Ǥ��ޤ���
FILEHANDLE �� EXPR �ΤȤ������μ����¹Ի���ɾ�����졢��̤�ʸ����
FILEHANDLE ��̾���Ȥ����Ѥ����ޤ���
�ե����ޥåȤˤĤ��Ƥξܺ٤ϡ���ҤΥե����ޥåȤΥ���������
���Ȥ��Ʋ�������
.Sp
write �� read ��*�դǤϤʤ�*���Ȥ����դ��Ʋ�������
.Sh "ͥ����"
.I perl
�α黻�Ҥϼ��Τ褦�ʷ�絬§��ͥ���٤���äƤ��ޤ�:
.nf

�ʤ�\h'|1i'print printf exec system sort reverse
\h'1.5i'chmod chown kill unlink utime die return
�����鱦\h'|1i',
�����麸\h'|1i'= += \-= *= �ʤ�
�����麸\h'|1i'?:
�ʤ�\h'|1i'.\|.
�����鱦\h'|1i'||
�����鱦\h'|1i'&&
�����鱦\h'|1i'| ^
�����鱦\h'|1i'&
�ʤ�\h'|1i'== != <=> eq ne cmp
�ʤ�\h'|1i'< > <= >= lt gt le ge
�ʤ�\h'|1i'chdir exit eval reset sleep rand umask
�ʤ�\h'|1i'\-r \-w \-x �ʤ�
�����鱦\h'|1i'<< >>
�����鱦\h'|1i'+ \- 
�����鱦\h'|1i'* / % x
�����鱦\h'|1i'=~ !~ 
�����麸\h'|1i'! ~ ñ���-
�����麸\h'|1i'**
�ʤ�\h'|1i'++ \-\|\-
�����鱦\h'|1i'\*(L'(\*(R'

.fi
�Ϥ�����ǽҤ٤��褦�ˡ��ꥹ�Ȥ�����ˤ���黻�� (print ¾) �䡢
Ǥ�դ�ñ��黻�� (chdir ¾) �Τ������Ʊ���Ԥμ��Υȡ�����Ȥ���
����̤������硢��̤���α黻�ҤȰ����ϡ������̾��
�ե��󥯥���󥳡����Ʊ�ͤ˺�ͥ��Ȥߤʤ���ޤ���
��:
.nf

	chdir $foo || die;\h'|3i'# (chdir $foo) || die
	chdir($foo) || die;\h'|3i'# (chdir $foo) || die
	chdir ($foo) || die;\h'|3i'# (chdir $foo) || die
	chdir +($foo) || die;\h'|3i'# (chdir $foo) || die

��������* �� || ����ͥ���٤��⤤�Τ�:

	chdir $foo * 20;\h'|3i'# chdir ($foo * 20)
	chdir($foo) * 20;\h'|3i'# (chdir $foo) * 20
	chdir ($foo) * 20;\h'|3i'# (chdir $foo) * 20
	chdir +($foo) * 20;\h'|3i'# chdir ($foo * 20)

	rand 10 * 20;\h'|3i'# rand (10 * 20)
	rand(10) * 20;\h'|3i'# (rand 10) * 20
	rand (10) * 20;\h'|3i'# (rand 10) * 20
	rand +(10) * 20;\h'|3i'# rand (10 * 20)

.fi
��̤��ʤ��ȡ�print, sort, chmod �Ȥ��ä��ꥹ�Ȥ�����˻��ı黻�Ҥϡ�
�黻�Ҥκ�¦�򸫤Ƥ��뤫��¦�򸫤Ƥ��뤫�ˤ�äơ����˹⤯��
�����㤯��ʤ�ޤ���
�㤨�С��������
.nf

	@ary = (1, 3, sort 4, 2);
	print @ary;		# 1324 �����

.fi
sort �α�¦�Υ���ޤϡ�sort ������ɾ������ޤ�������¦�Υ���ޤϡ�
���ɾ������ޤ���
����������ȡ��ꥹ�Ȥ�����˼��黻�Ҥϡ������³�����٤Ƥΰ�����
���������ˤ��ꡢ���μ��ˤ������ä�ñ���̿���Τ褦�˿��񤤤ޤ���
��̤����տ����ʤ���Ф����ʤ����Ȥ�Ф��Ƥ����Ʋ�����:
.nf

.ne 3
	# ������ɾ������ȡ�print ��¹Ԥ������� exit ���ޤ���
	print($foo, exit);	# ���餫�ˤ�ꤿ�����ȤȤϰ㤤�ޤ�
	print $foo, exit;	# ����⤽��

.ne 4
	# �����ϡ�exit ��ɾ���������� print ��¹Ԥ��ޤ���
	(print $foo), exit;	# ����Ϥ�ꤿ�����ȤǤ�
	print($foo), exit;	# ����⤽��
	print ($foo), exit;	# ����ˤ����

�ޤ��������

	print ($foo & 255) + 1, "\en";

.fi
¿ʬ���ܸ��ƴ��Ԥ���ư��Ȥϰ㤦���Ȥ�¹Ԥ���Ǥ��礦��
.Sh "���֥롼����"
���֥롼����ϼ��Τ褦���������ޤ�:
.nf

    sub NAME BLOCK

.fi
.PP
�롼������Ϥ��줿���٤Ƥΰ����ϡ����� @_ ������ޤ���
����ϡ�($_[0], $_[1], .\|.\|.) �Ǥ���
���� @_ �ϥ�����������Ǥ����������ͤϼºݤΥ�����ѥ�᡼���ؤλ���
�ˤʤ�ޤ���
���֥롼���������ͤϡ��Ǹ�μ���ɾ�����줿�Ȥ����ͤǡ������ͤˤ�
�������ͤˤ�ʤ����ޤ���
�ޤ����꥿����ʸ������ͤ���ꤷ�ƥ��֥롼�����ȴ���뤳�Ȥˤ�
�Ȥ��ޤ���
���������ѿ����������ˤϡ�
.I local
�黻�Ҥ򻲾Ȥ��Ʋ�������
.PP
���֥롼����ϡ�
.I do
�黻�Ҥ��ޤ��� & �黻�Ҥ�ȤäƸƤФ�ޤ���
.nf

.ne 12
��:

	sub MAX {
		local($max) = pop(@_);
		foreach $foo (@_) {
			$max = $foo \|if \|$max < $foo;
		}
		$max;
	}

	.\|.\|.
	$bestday = &MAX($mon,$tue,$wed,$thu,$fri);

.ne 21
��:

	# �Ԥ������������ǻϤޤ�Ԥ�
	# ³���ιԤȤ��Ʒ�礵��ޤ���
	sub get_line {
		$thisline = $lookahead;
		line: while ($lookahead = <STDIN>) {
			if ($lookahead \|=~ \|/\|^[ \^\e\|t]\|/\|) {
				$thisline \|.= \|$lookahead;
			}
			else {
				last line;
			}
		}
		$thisline;
	}

	$lookahead = <STDIN>;	# �ǽ�ιԤ�������ޤ�
	while ($_ = do get_line(\|)) {
		.\|.\|.
	}

.fi
.nf
.ne 6
������̾�����դ���ˤϡ���������ꥹ�Ȥؤ������������Ȥ��ޤ�:

	sub maybeset {
		local($key, $value) = @_;
		$foo{$key} = $value unless $foo{$key};
	}

.fi
�������ͤ򥳥ԡ�����Τǡ�����ϻ��ȸƤӽФ����͸ƤӽФ��˴�������̤�
����ޤ���
.Sp
���֥롼����ϺƵ�Ū�˸ƤӽФ��ޤ���
���֥롼���� & �η���ȤäƸƤӽФ����Ȥ��������ꥹ�ȤϾ�ά
�Ǥ��ޤ���
��ά�����ȡ����֥롼����ˤ� @_ ���󤬥��åȤ���ޤ���;
�������ꡢ�ƤӽФ����� @_ ����ϡ����֥롼����ˤϲĻ�Ȥʤ�ޤ���
.nf

	do foo(1,2,3);		# ���Ĥΰ������Ϥ��ޤ�
	&foo(1,2,3);		# ���Ʊ���Ǥ�

	do foo();		# �̥�ꥹ�Ȥ��Ϥ��ޤ�
	&foo();			# ���Ʊ���Ǥ�
	&foo;			# �������Ϥ��ޤ���\*(--����ΨŪ

.fi
.Sh "�����Ϥ�"
���֥롼�����������ͤ��Ϥ��ΤǤϤʤ�������̾�����Ϥ��ơ����֥롼����
����������ʥ��ԡ����Ф��ƤǤϤʤ��������Х��������ѹ��Ǥ���褦��
�������Ȥ�������Ǥ��礦��
perl �Ǥ�̾������Ĥ��٤ƤΥ��֥������Ȥ��Ф��ơ�����̾�������� * ��
�Ĥ��ƻ��ȤǤ��ޤ�: *foo �Τ褦�ˡ�
���줬ɾ�������ȡ��ե�����ϥ�ɥ롢�ե����ޥåȡ����֥롼�����ޤࡢ
����̾������Ĥ��٤ƤΥ��֥������Ȥ�ɽ���������ͤȤʤ�ޤ���
local() �黻�Ҥ��������줿�Ȥ�������̾����������������줿 * �ͤ�
���Ȥ���褦�ˤʤ�ޤ���
��:
.nf

	sub doubleary {
	    local(*someary) = @_;
	    foreach $elem (@someary) {
		$elem *= 2;
	    }
	}
	do doubleary(*foo);
	do doubleary(*bar);

.fi
*name �ؤ������Ϻ��ΤȤ��� local() ����Ǥ���������ޤ���
�ºݤˤ� *name �ؤ������Ϥɤ��ǤǤ�Ǥ��ޤ�������������� *name �ؤ�
���Ȥ��ʱ������������⤷��ޤ���
����ˤ�꺤�ä����Ȥˤʤ뤫�⤷��ޤ��󤷡��ʤ�ʤ����⤷��ޤ���
.Sp
������Ϥ��Ǥ˻����Ϥ��Ǥ��������Υᥫ�˥�����Ѥ��ʤ��Ƥ⡢
�ؿ��Τ��� $_[nnn] �ؤ�����Ū�ʻ��Ȥ�Ԥ����Ȥǡ�������ΰ�����
�ѹ����뤳�Ȥ��Ǥ��ޤ���
���٤Ƥ����Ǥ򥹥�����Ϥ����Ȥǡ����٤Ƥ���������Ǥ��ѹ����뤳�Ȥ�
�Ǥ��ޤ�����push �� pop ������Υ��������ѹ��ˤ� * �ᥫ�˥����
�Ȥ�ʤ���Фʤ�ޤ���
�ɤ�ʾ��Ǥ⡢* �ᥫ�˥����¿ʬ������Ψ���ɤ��Ϥ��Ǥ���
.Sp
*name �ͤ�ɽ����ǽ�ʥХ��ʥ�ǡ�����ޤ�Τǡ�print �ΰ����ޤ��� printf 
�� sprintf �� %s �����Ȥ��ƻȤ���ȡ�ɽ�������ˤ��뤿�� '*name' ��
�����ͤˤʤ�ޤ���
.Sp
�̾� LIST �ᥫ�˥���Ϥ��٤Ƥ������ͤ�ޡ������Ƥ��ޤäơ��ġ��������
���Ф��ʤ��ʤäƤ��ޤ��Τǡ�������ѹ��������ʤ��Ȥ��Ƥ⡢
���Υᥫ�˥���ϰ�Ĥ� LIST �ˤ��������������Ϥ��Τ������Ǥ���
.Sh "����ɽ��"
�ѥ�����ޥå��ǻȤ���ѥ�����ϡ��С������ 8 regexp �롼����Ƕ���
����Ƥ����Τ�Ʊ������ɽ���Ǥ���
(�ºݡ����Υ롼����� Henry Spencer �μ�ͳ�˺����۲�ǽ�ʺƼ��� V8 �롼����
����ȴ����äƻȤ��Ƥ��ޤ���)
����˲ä��ơ�\ew �ϱѿ��� (\*(L"_\*(R" ��ޤ�) �˥ޥå�����
\eW ����ѿ����˥ޥå����ޤ���
ñ�춭���� \eb �ˡ���ñ�춭���� \eB �ˡ�
����ʸ���� \es �ˡ������ʸ���� \eS �ˡ�
������ \ed �ˡ�������� \eD �˥ޥå����ޤ���
\ew, \es, \ed �ϥ���饯�����饹�Ǥ�Ȥ��ޤ���
�ޤ���\en, \er, \ef, \et, \eNNN ���̾��Ʊ����̣�Ȥʤ�ޤ���
����饯�����饹����Ǥϡ�\eb ��ñ�춭���ǤϤʤ���
�Хå����ڡ�����ɽ���ޤ���
�������ϡ�| �Ƕ��ڤ�ޤ���
��̹�¤ \|(\ .\|.\|.\ \|) ��Ȥ��ȡ�\e<����> �Ϥ��ο������ܤ�
��ʬʸ����˥ޥå����ޤ���
(�ѥ�����γ��Ǥϡ����������� \e ������˾�� $ ���Ѥ��ʤ����
�ʤ�ޤ���$<����> (�� $\`, $&, $\') ��ͭ���ϰϤϡ��Ĥ����֥��å���
���꤫��eval ʸ���󤫡����Υѥ�����ޥå��ޤǤȤʤ�ޤ���
\e<����> ���Ҥϡ��Ȥ��˸��ߤΥѥ�����γ��˺��Ѥ��ޤ������������ä�
�Ϥ����ޤ���)
��̤Ϲ����ʤ�����������ȤäƤ��ޤ��ޤ���9 �İʾ����ʬʸ����
����ȡ��ѿ� $10, $11, ... ���б�������ʬʸ����򻲾Ȥ��ޤ���
�������Ȥ����˾��ʤ��Ȥ⤽�ο��κ���̤�����ȡ��ѥ��������Ǥϡ�
\e10, \e11 ������ʬʸ�����������Ȥ��ޤ���
�����Ǥʤ���� (�����Ȥθߴ����Τ����) \e10 �� \e010 �ΥХå����ڡ�����
Ʊ����\e11 �� \e011 �Υ��֤�Ʊ���Ȥ����褦�ˤʤ�ޤ���
(\e1 ���� \e9 �Ͼ�˸������ȤǤ���)
.PP
$+ �ϡ��Ǹ�γ�̤ǥޥå�������Τ��֤��ޤ���
$& �ϡ��ޥå�����ʸ�������Τ��֤��ޤ���
($0 ��Ʊ����Τ��֤��Ƥ��ޤ����������ϰ㤤�ޤ���)
$\` �ϥޥå�����ʸ�����������ʸ������֤��ޤ���
$\' �ϥޥå�����ʸ����θ����ʸ������֤��ޤ���
��:
.nf
    
	s/\|^\|([^ \|]*\|) \|*([^ \|]*\|)\|/\|$2 $1\|/;	# �ǽ�������

.ne 5
	if (/\|Time: \|(.\|.\|):\|(.\|.\|):\|(.\|.\|)\|/\|) {
		$hours = $1;
		$minutes = $2;
		$seconds = $3;
	}

.fi
�ǥե���Ȥǡ�^ ʸ����ʸ�������Ƭ�ˡ�$ ʸ����ʸ����κǸ�
(�ޤ��ϺǸ�β���ʸ������) �˥ޥå����뤳�Ȥ��ݾ㤵��Ƥ��ꡢ
.I perl
��ʸ���󤬰�Ԥ����ޤ�Ǥ��ʤ��Ȥ�������Τ�Ȥǡ�
�����Ŭ����ԤʤäƤ��ޤ���
���Ԥ������ޤ줿���� ^ �� $ �ο��񤤤ϡ�̷���������Ǥ��礦��
��������^ ��ʸ�������Ǥ�դβ��Ԥθ�ˡ�$ �����Ԥ����˥ޥå�����褦
�ʡ�ʸ�����ʣ���ԥХåե��Ȥ��ƻȤ�������礬���뤫�⤷��ޤ���
�����Υ����Хإåɤ�и礹��С��ѿ� $* �� 1 �򥻥åȤ��뤳�Ȥǡ�
���줬�Ǥ��ޤ���
$* �� 0 �����ꤷľ���С�
.I perl
�ϸ���ư������ޤ���
.PP
ʣ���Ԥ��ִ����Ѱդˤ��뤿��ˡ�. ʸ���ϲ���ʸ���ˤϥޥå����ޤ���
(���Ȥ� $* �� 0 �Ǥ��äƤ�) ��
�ä˼�����Ǥϡ�����ʸ���� $_ ʸ����˻Ĥ�ޤ�:
.nf

	$_ = <STDIN>;
	s/.*(some_string).*/$1/;

����ʸ�����פ�ʤ��ʤ顢���Τɤ줫���Ʋ�������

	s/.*(some_string).*\en/$1/;
	s/.*(some_string)[^\e000]*/$1/;
	s/.*(some_string)(.|\en)*/$1/;
	chop; s/.*(some_string).*/$1/;
	/(some_string)/ && ($_ = $1);

.fi
����ɽ���Τɤ����Ǥθ�Ǥ����̤ǰϤ�������� {n,m} �η���
�֤����Ȥ��Ǥ���n �����Ǥ��ޥå�����Ǿ��β����m �Ǻ���β����
���ꤷ�ޤ���
{n} �η��ϡ�{n,n} ��Ʊ���ǡ����Τ� n ��˥ޥå����ޤ���
{n,} �η��ϡ�n ��ʾ�˥ޥå����ޤ���
(���̤�¾�Υ���ƥ����Ȥ���˽Ф��褿���ϡ��̾��ʸ���Ȥ���
�����ޤ���)
* �����Ҥ� {0,} �ȡ�+ �����Ҥ� {1,} �ȡ�? �����Ҥ� {0,1} ��
Ʊ���Ȥʤ�ޤ���
n �� m �Υ������ˤ����¤�����ޤ��󤬡��礭�������Ϥ��¿���Υ����
���񤹤�Ǥ��礦��
.Sp
.I perl
�Ǥϡ�
\eb, \ew, \en �Τ褦��
�Хå�����å���ΤĤ��᥿����饯���ϡ����٤Ʊѿ����Ǥ��뤳��
�˵����Ĥ���뤳�ȤǤ��礦��
¾������ɽ������Ȥϰ�äơ��ѿ����Ǥʤ��Хå�����å��奷��ܥ��
����ޤ���
���äơ�\e\e, \e(, \e), \e<, \e>, \e{, \e} �Ȥ����褦�ʤ�Τϳ���
�᥿����饯���ǤϤʤ���ʸ�����Τ�ΤȤ��Ʋ�ᤵ��ޤ���
����ˤ�ꡢ�᥿����饯���˴ޤޤ��ΤǤϤʤ����ȿ��ۤˤʤ�褦��
ʸ�����ѥ�����˻Ȥäơ����Ѥ��뤳�Ȥ��ưפˤʤ�ޤ���
�ѿ����Ǥʤ����٤Ƥ�ʸ���ΰ��Ѥϡ����Τ褦�ˤ��ޤ�:
.nf

	$pattern =~ s/(\eW)/\e\e$1/g;

.fi
.Sh "�ե����ޥå�"
.I write
�黻�ҤǻȤ����ϥ쥳���ɥե����ޥåȤϡ����Τ褦��
������ޤ�:
.nf

.ne 3
    format NAME =
    FORMLIST
    .

.fi
NAME ���ά����ȡ�\*(L"STDOUT\*(R" �ե����ޥåȤ��������ޤ���
FORMLIST ��ʣ���Ԥ������ꡢ�ƹԤϼ��λ��Ĥη��Τ����줫�Ȥʤ�ޤ�:
.Ip 1. 4
������
.Ip 2. 4
��Ĥν��ϹԤΥե����ޥåȤ򼨤� \*(L"picture\*(R" ��
.Ip 3. 4
picture �Ԥ��ͤ�Ϳ���������
.PP
picture �Ԥϡ���������ͤ��ִ����������Υե�����ɤ�����С�
�����ܤ��Τޤޤ˽��Ϥ���ޤ���
�� picture �ե�����ɤϡ�@ �� ^ �ǻϤޤ�ޤ���
@ �ե������ (�������Ƭ�� @ �Ⱥ��𤷤ʤ��褦��) ���̾�ξ��
�ǡ�^ �ե�����ɤϴ���Ū��ʣ���ԥƥ����ȥ֥��å�������Τ�
�Ȥ��ޤ���
�ե�����ɤ�Ĺ���ϡ�<, >, | �η����֤������뤳�Ȥǻ��ꤷ�����줾��
���󤻡����󤻡����󥿥�󥰤��̣���ޤ���
���󤻤��̤ʷ��Ȥ��ơ�# ʸ���� (����� . ���դ��Ƥ��ɤ�) 
�����ե�����ɤλ���Ȥ��ƻȤ����Ȥ�Ǥ��ޤ���
(@ �Τ����� ^ ��Ȥ��ȡ�undefined �ʥե�����ɤ�����ˤʤ�ޤ���)
�����Υե�����ɤ�Ϳ����줿�ͤ����Ԥ�ޤ�ȡ����ԤޤǤΥƥ�����
�Τߤ����Ϥ���ޤ���
�ü�ե������ @* ��ʣ���Ԥ��ͤν��Ϥ˻Ȥ��ޤ���
���ιԤ˽񤫤�Ƥ���Τ� @* �����Ǥʤ��ƤϤ����ޤ���
.PP
�ͤϡ����ιԤǻ��ꤵ�졢picture �ե�����ɤ�Ʊ����Ȥʤ�ޤ���
�ͤϥ���ޤǶ��ڤ��Ƥ��ʤ���Фʤ�ޤ���
.PP
@ �Ǥʤ� ^ �ǻϤޤ� picture �ե�����ɤϡ����̤ʰ����ˤʤ�ޤ���
���ꤹ���ͤϡ��ƥ�����ʸ�������äƤ��륹�����ѿ�̾�Ǥʤ����
�����ޤ���
.I perl
�ϡ��ե�����ɤ�������������������Υƥ����Ȥ����졢�ѿ������˻���
�����Ȥ���³�������Ϥ����褦�ˡ�ʸ�������Ƭ���餽�Υƥ����Ȥ���ޤ���
�̾�ƥ����ȤΥ֥��å�����Ϥ���ˤϡ���ľ�ʥ����å�����˥ե������
�ΰ�³��������ƻȤ��ޤ���
�����������ˤϥƥ����Ȥ�Ĺ������Ȥ����������������
�Ǹ�Υե�����ɤ� .\|.\|. �ǽ��餻�뤳�Ȥ�Ǥ��ޤ���
�ѿ� $: �򹥤���ʸ���Υꥹ�Ȥˤ��뤳�Ȥǡ��ƥ����Ȥ�ʬ�䤹��ʸ����
�Ѥ��뤳�Ȥ��Ǥ��ޤ���
.PP
^ �ե�����ɤ�Ȥ��ȡ�����Ĺ�Υ쥳���ɤ���������Τǡ��ƥ����Ȥ�
�ե����ޥåȤ�û���������Ȥ�������� (~) ʸ����ԤΤɤ����������
���Ԥ��������뤳�Ȥ��Ǥ��ޤ���
(����������뤿�ᡢ���̤ϤǤ���й�Ƭ�������٤��Ǥ���)
������Ͻ��ϻ��ˤ϶�����Ѵ�����ޤ���
����ܤ�³��������ܤΥ������񤯤ȡ�����Τ��٤ƤΥե�����ɤ�
�ʤ��ʤ�ޤǡ����ιԤ򷫤��֤��ޤ���
(���������� @ �Υե�����ɤ�Ȥ��Ȥ���Ϳ���뼰�Ϥ��Ĥ�Ʊ���ͤǤϤʤ�����
�ɤ��Ǥ��礦��)
.PP
��:
.nf
.lg 0
.cs R 25
.ft C

.ne 10
# /etc/passwd �ե�����η���
format STDOUT_TOP =
\&                        Passwd File
Name                Login    Office   Uid   Gid Home
------------------------------------------------------------------
\&.
format STDOUT =
@<<<<<<<<<<<<<<<<<< @||||||| @<<<<<<@>>>> @>>>> @<<<<<<<<<<<<<<<<<
$name,              $login,  $office,$uid,$gid, $home
\&.

.ne 29
# �Х���ݡ��ȷ���
format STDOUT_TOP =
\&                        Bug Reports
@<<<<<<<<<<<<<<<<<<<<<<<     @|||         @>>>>>>>>>>>>>>>>>>>>>>>
$system,                      $%,         $date
------------------------------------------------------------------
\&.
format STDOUT =
Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&         $subject
Index: @<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&       $index,                       $description
Priority: @<<<<<<<<<< Date: @<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&          $priority,        $date,   $description
From: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&      $from,                         $description
Assigned to: @<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&             $programmer,            $description
\&~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&                                     $description
\&~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&                                     $description
\&~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&                                     $description
\&~                                    ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<
\&                                     $description
\&~                                    ^<<<<<<<<<<<<<<<<<<<<<<<...
\&                                     $description
\&.

.ft R
.cs R
.lg
.fi
Ʊ�����ϥ����ͥ���Ф��ơ�write ��Ȥäƽ��Ϥ򺮤��뤳�ȤϤǤ��ޤ�
����$\- (�ڡ����λĤ�Կ�) ��ʬ�Ǥ�����ʤ���Фʤ�ޤ���
.PP
�ۤȤ�ɤ�����Υե�����ɤ��������󤢤�Ȥ���
�쥳���ɴ֤� reset �黻�Ҥ�Ȥ����Ȥ�ͤ���٤��Ǥ���
��ΨŪ�Ǥ���Ȥ��������Ǥʤ����̤Υե�����ɤ�ä��Ƥ��ޤ���0 ��
��˺��Ƥ��ޤ��Ȥ����Х����ɤ����Ȥ��Ǥ��ޤ���
.Sh "�ץ��������̿�"
perl �� �ץ��������̿�(IPC)��ǽ�Ϥ� Berkeley �Υ����åȵ�����
��Ť��Ƥ��ޤ���
�����åȤ�̵����С����Υ���������̵��Ǥ��ޤ���
���θƤӽФ��ϡ�Ʊ̾�Υ����ƥॳ������������ޤ�����
��Ĥ���ͳ����������ϰۤʤ�ޤ���
����ܤϡ�perl �Υե�����ϥ�ɥ�� C �ե�����ǥ�������ץ��Ȥ�
�ۤʤ�ư��򤹤�Ȥ������ȤǤ���
����ܤϡ�perl ��ʸ�����Ĺ�����ΤäƤ���Τǡ����ξ�����Ϥ��ʤ��Ƥ�
�ɤ��Ȥ������ȤǤ���
�ʲ������饤����ȤΥ���ץ� (̤�ƥ���) �Ǥ�:
.nf

	($them,$port) = @ARGV;
	$port = 2345 unless $port;
	$them = 'localhost' unless $them;

	$SIG{'INT'} = 'dokill';
	sub dokill { kill 9,$child if $child; }

	require 'sys/socket.ph';

	$sockaddr = 'S n a4 x8';
	chop($hostname = `hostname`);

	($name, $aliases, $proto) = getprotobyname('tcp');
	($name, $aliases, $port) = getservbyname($port, 'tcp')
		unless $port =~ /^\ed+$/;
.ie t \{\
	($name, $aliases, $type, $len, $thisaddr) = gethostbyname($hostname);
'br\}
.el \{\
	($name, $aliases, $type, $len, $thisaddr) =
					gethostbyname($hostname);
'br\}
	($name, $aliases, $type, $len, $thataddr) = gethostbyname($them);

	$this = pack($sockaddr, &AF_INET, 0, $thisaddr);
	$that = pack($sockaddr, &AF_INET, $port, $thataddr);

	socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!";
	bind(S, $this) || die "bind: $!";
	connect(S, $that) || die "connect: $!";

	select(S); $| = 1; select(stdout);

	if ($child = fork) {
		while (<>) {
			print S;
		}
		sleep 3;
		do dokill();
	}
	else {
		while (<S>) {
			print;
		}
	}

.fi
���줬������¦�Ǥ�:
.nf

	($port) = @ARGV;
	$port = 2345 unless $port;

	require 'sys/socket.ph';

	$sockaddr = 'S n a4 x8';

	($name, $aliases, $proto) = getprotobyname('tcp');
	($name, $aliases, $port) = getservbyname($port, 'tcp')
		unless $port =~ /^\ed+$/;

	$this = pack($sockaddr, &AF_INET, $port, "\e0\e0\e0\e0");

	select(NS); $| = 1; select(stdout);

	socket(S, &PF_INET, &SOCK_STREAM, $proto) || die "socket: $!";
	bind(S, $this) || die "bind: $!";
	listen(S, 5) || die "connect: $!";

	select(S); $| = 1; select(stdout);

	for (;;) {
		print "Listening again\en";
		($addr = accept(NS,S)) || die $!;
		print "accept ok\en";

		($af,$port,$inetaddr) = unpack($sockaddr,$addr);
		@inetaddr = unpack('C4',$inetaddr);
		print "$af $port @inetaddr\en";

		while (<NS>) {
			print;
			print NS;
		}
	}

.fi
.Sh "ͽ���ѿ�"
�����ѿ�̾�ϡ�
.IR perl
�ˤȤä����̤ʰ�̣������ޤ���
�����Τ������Ĥ��ϥ���ե��٥åȤΥ���ܥ�ˤ⤷�Ƥ��ɤ��ä��ΤǤ�����
reset \*(L"a\-zA\-Z\*(R" ��ͽ���ѿ��ޤǾä���Ƥ��ޤ��褦�ʤ��Ȥ�
�������ʤ��ä��ΤǤ���
���Τ��ᡢ�����Τ������ʥ���ܥ�̾��Ǻ�ޤ���ʤ���Фʤ�ʤ��Ǥ��礦��
���Τ���¿���϶ڤ��̤ä��ˡ���˥å� (������ˡ) �ǡ�������Τ�Τ�
����ˤʤäƤ��ޤ���
.Ip $_ 8
���Ϥ���ӥѥ����󸡺��Υǥե���ȡ�
�����ȤϤ��줾��Ʊ���Ǥ�:
.nf

.ne 2
	while (<>) {\|.\|.\|.	# while ����ǤΤ�Ʊ��
	while ($_ = <>) {\|.\|.\|.

.ne 2
	/\|^Subject:/
	$_ \|=~ \|/\|^Subject:/

.ne 2
	y/a\-z/A\-Z/
	$_ =~ y/a\-z/A\-Z/

.ne 2
	chop
	chop($_)

.fi
(�Ф���: �����ϼ¹Ԥ����Ȥ狼�롣)
.Ip $. 8
�Ǹ���ɤ߹��ޤ줿�ե�����ϥ�ɥ�θ��ߤι��ֹ档
�ɤ߽Ф����ѡ�
����Ū�ʥե�����ϥ�ɥ�� close �ǤΤ߹��ֹ椬�ꥻ�åȤ���뤳�Ȥ�
�Ф��Ƥ����Ʋ�������
<> ������Ū�� close ��Ԥʤ�ʤ��Τǡ�ARGV �ե������������̤��ƹ��ֹ�
�������Ƥ����ޤ� (eof ����򻲾Ȥ��Ʋ�����) ��
(�Ф���: ¿���Υץ������� . �򸽺߹��ֹ�ΰ�̣�ǻȤ���)
.Ip $/ 8
���ϥ쥳���ɤζ��ڤ�ʸ�����ǥե���Ȥϲ��ԡ�
�̥�ʸ����˥��åȤ����ȶ��Ԥ���ڤ�Ȥ��ư������Ȥ�ޤ�ơ�
.IR awk
�� RS �ѿ���Ʊ��Ư���򤷤ޤ���
ʣ��ʸ���˥��åȤ����ʣ��ʸ�����ڤ�˥ޥå������뤳�Ȥ��Ǥ��ޤ���
�ե�����˶��Ԥ�Ϣ³���Ƥ���Ȥ���
�����ѿ��� "\en\en" �˥��åȤ���ȡ�"" �˥��åȤ������
�����ۤʤ��̣����Ĥ��Ȥ����դ��Ʋ�������
"" �˥��åȤ���ȡ���Ĥ�����ʾ��Ϣ³�������Ԥ��Ĥζ��ԤȤ���
�����ޤ��� "\en\en" �˥��åȤ���ȡ����Ԥθ�ˤ��Ȥ�����ʸ����
³���Ƥ��Ƥ⡢��������˴ޤޤ�Ƥ����Τ�����Ū�˲�ᤵ��ޤ���
(�Ф���: / �ϻ��򥯥����Ȥ���Ȥ��Զ����ζ��ڤ�Ȥ��ƻȤ��롣)
.Ip $, 8
print �黻�ҤΤ���ν��ϥե�����ɶ��ڤ�ʸ����
�̾�ϡ�print �黻�Ҥ�ñ�˥���޶��ڤ�ǻ��ꤷ���ե�����ɤ�
���Ϥ��ޤ������
.IR awk
�˻�����ư�򤵤��뤿��ˤϡ��ե�����ɴ֤˽��Ϥ���ʸ����
���ꤹ��
.IR awk
�� OFS �ѿ���Ʊ����Τ򡢤����ѿ��򥻥åȤ��Ʋ�������
(�Ф���: printʸ�� , ������Ȥ����Ϥ��٤���Ρ�)
.Ip $"" 8
$, �Ȼ��Ƥ��ޤ����������ѿ��ΰۤʤ����ϡ�"" �ǰϤޤ줿
ʸ���� (�ޤ���Ʊ�ͤ�����ʸ��) ����������������ͤ�Ŭ�Ѥ���뤳�ȤǤ���
�ǥե���Ȥ϶���ʸ���Ǥ���
(����: ���������)
.Ip $\e 8
print �黻�Ҥν��ϥ쥳���ɥ��ѥ졼��ʸ����
�̾� print �黻�Ҥϡ���˲��Ԥ�쥳���ɥ��ѥ졼��ʸ����³���Ƥ��ʤ���
���ꤷ�ơ�ñ�˥���޶��ڤ�λ���ե�����ɤ���Ϥ��ޤ���
���
.IR awk
�˻�����ư�򤵤��뤿��ˤϡ�print �ν���˽��Ϥ���ʸ������ꤹ��
.IR awk
�� ORS �ѿ���Ʊ����Τ򤳤��ѿ��˥��åȤ��Ʋ�������
(�Ф���: print �ν���� \en ��ä�������� $\e �򥻥åȡ�)
/ �ˤ���Ƥ��ޤ�����
.IR perl
���� \*(L"����\*(R" ��ΤǤ���)
.Ip $# 8
�����ν��ϤΤ���ν��ϥե����ޥåȡ�
�����ѿ���
.IR awk
�� OFMT �ѿ���Ⱦʬ���������Ѥ��Ǥ��ޤ���
������
.I awk
��
.I perl
�Ǥϡ��ºݤ˲��������Ǥ��뤫�Ȥ�����ǰ�ΰۤʤ뤳�Ȥ����Ф��Ф���ޤ���
����ͤ⡢%.6g �Ǥʤ� %.20g �Ǥ��Τǡ�
.IR awk
���ͤ�����ˤϡ�����Ū�� $# �򥻥åȤ���ɬ�פ�����ޤ���
(�Ф���: # �Ͽ����ε��档)
.Ip $% 8
���� select ����Ƥ�����ϥ����ͥ�θ��ߤΥڡ����ֹ档
(�Ф���: % �� nroff �ˤ�����ڡ����ֹ档)
.Ip $= 8
���� select ����Ƥ�����ϥ����ͥ�θ��ߤΥڡ���Ĺ (���ϲ�ǽ��) ��
�ǥե���Ȥ� 60 ��
(�Ф���: = ��ʿ������)
.Ip $\- 8
���� select ����Ƥ�����ϥ����ͥ�Υڡ����λĤ�Կ���
(�Ф���: 1 �ڡ����ιԿ� \- ���ϺѤ߹Կ�)
.Ip $~ 8
���� select ����Ƥ�����ϥ����ͥ�θ��ߤΥ�ݡ��ȥե����ޥå�̾��
�ǥե���Ȥϡ��ե�����ϥ�ɥ�̾��
(�Ф���: $^ ����֡�)
.Ip $^ 8
���� select ����Ƥ�����ϥ����ͥ�θ��ߤΥڡ�����Ƭ�ե����ޥå�̾��
�ǥե���Ȥϡ��ե�����ϥ�ɥ�̾�� \*(L"_TOP\*(R" ��ä�����Ρ�
(�Ф���: ��Ƭ�ڡ�����ؤ���)
.Ip $| 8
0 �Ǥʤ��ͤ򥻥åȤ���ȡ����� select ����Ƥ�����ϥ����ͥ��
write �� print ���Ԥʤ�����˥ե�å��夷�ޤ���
�ǥե���Ȥ� 0 ��
�̾�
.I STDOUT
�ϡ�ü���˽��Ϥ���Ȥ��ϹԥХåե����Ȥ�졢����ʳ��Ǥ�
�֥��å��Хåե����Ȥ��뤳�Ȥ����դ��Ʋ�������
�����ѿ��򥻥åȤ���Τϡ�
.I perl
������ץȤ� rsh �δ�����餻�Ƥ��������
�ѥ��פ˽��Ϥ��Ƥ�����ˡ�
���Ϥ��������٤˳�ǧ���������������Ǥ���
(�Ф���: �ѥ��פ���ư�����Ƥ���������)
.Ip $$ 8
.I perl
�����餻�Ƥ��륹����ץȤΥץ������ֹ档
(�Ф���: �������Ʊ����)
.Ip $? 8
�Ǹ�� close �����ѥ��פ� (\`\`) ���ޥ�ɤ�
.I system
�黻�Ҥ�����͡�
����ϡ�wait() �����ƥॳ���뤬�֤����ơ������ʤΤǡ����֥ץ�������
��λ�ͤϼºݤ� ($? >> 8) �Ǥ���
�ץ�������λ�����������ʥ뤬���ä���硢$? & 255 ��
�ɤΥ����ʥ�Ǥ��뤫��dump ���줿 core �����뤫�ɤ������֤��ޤ���
(�Ф���: sh �� ksh ��Ʊ����)
.Ip $& 8 4
�Ǹ�����������ѥ�����ޥå��ǥޥå�����ʸ����
(�֥��å���丽�ߤΥ֥��å����Ĥ��� eval �ǤΥޥå��ϴޤޤ�ޤ���)
(�Ф���: ���륨�ǥ����� & ��Ʊ����)
.Ip $\` 8 4
�Ǹ�˥ѥ�����ޥå������������ѥ���������ˤ���ʸ����
(�֥��å���丽�ߤΥ֥��å����Ĥ��� eval �ǤΥޥå��ϴޤޤ�ޤ���)
(�Ф���: \` �����񥯥����Ȥ��줿ʸ���������)
.Ip $\' 8 4
�Ǹ�˥ѥ�����ޥå������������ѥ�����θ���ˤ���ʸ����
(�֥��å���丽�ߤΥ֥��å����Ĥ��� eval �ǤΥޥå��ϴޤޤ�ޤ���)
(�Ф���: \' �����񥯥����Ȥ��줿ʸ����θ塣)
��:
.nf

.ne 3
	$_ = \'abcdefghi\';
	/def/;
	print "$\`:$&:$\'\en";  	# abc:def:ghi �����

.fi
.Ip $+ 8 4
�Ǹ�˸��������ѥ�����κǸ�γ�̤˥ޥå����ޤ���
����ϡ�ʣ������Υѥ�����ޥå��Ǥɤ���˥ޥå����뤫�狼��ʤ�
�Ȥ��������Ǥ���
��:
.nf

    /Version: \|(.*\|)|Revision: \|(.*\|)\|/ \|&& \|($rev = $+);

.fi
(�Ф���: ���ǡ������򸫤뤳�ȡ�)
.Ip $* 8 2
ʸ������ǡ�ʣ���ԤΥޥå���Ԥʤ��Ȥ� 1 �򥻥åȤ���
�ѥ�����ޥå��κ�Ŭ������Ū�ǡ�ñ��Ԥ�ޤ�ʸ����Ǥ����
.I perl
�˷���Ǥ��ˤ�����Ȥ��� 0 �Ȥ��ޤ���
$* �� 0 �ΤȤ���ʣ���β��Ԥ�ޤ�ʸ����Υѥ�����ޥå��򤹤�ȡ�
���𤷤���̤Ȥʤ�ޤ���
�ǥե���Ȥ� 0 ��
(�Ф���: * ��ʣ���Τ�Τ˥ޥå����롣)
�����ѿ��ϡ�^ �� $ �β��˱ƶ���������Ǥ���Ȥ������Ȥ�
���դ��Ʋ�������
���ԤΥ�ƥ��ϡ�when $* == 0 �Ȥ��Ƥ⸡���Ǥ��ޤ���
.Ip $0 8
.I perl
��ư����������ץȤΥե�����̾���ݻ����Ƥ��ޤ���
$0 �����Ҥؤ������ϡ�ps(1) �ץ������ΰ�������ʬ�򻲾Ȥ��Ʋ�������
(�Ф���: sh �� ksh ��Ʊ��)
.Ip $<����> 8
�Ǹ�˹Ԥʤä��ѥ�����ޥå����б�����������ܤγ�̤Υ��֥ѥ�����
����Ҥˤʤä��֥��å���Ǵ��˽�λ�����ѥ�����ޥå��ο��ϴޤޤ�ޤ���
(�Ф���: \e������Ʊ����)
.Ip $[ 8 2
������κǽ�����Ǥ���ʬʸ����κǽ��ʸ����ź����
�ǥե���Ȥ� 0 �Ǥ�����index() �� substr() �ؿ���
ź���ΤĤ�����ɾ���˴ؤ��ơ�
.I perl
��
.I awk
(�� Fortran)
��ư��ˤ�����ˤϡ������ѿ��� 1 �򥻥åȤ��뤳�ȤǤǤ��ޤ���
(�Ф���: [ ��ź���λϤޤꡣ)
.Ip $] 8 2
\*(L"perl -v\*(R" �ǽ��Ϥ����ʸ����
����ϡ�perl ���󥿡��ץ꥿���������С��������ϰϤǥ�����ץȤ�
�¹Ԥ��Ƥ��뤫�ɤ�������뤿��ˡ�������ץȤλϤ�����ǻȤ��ޤ���
���ͤΥ���ƥ����ȤǻȤ���ȡ��С������ + �ѥå���٥� / 1000 ��
�֤��ޤ���
��:
.nf

.ne 8
	# getc���Ĥ����뤫�ɤ�����Ĵ�٤ޤ�
        ($version,$patchlevel) =
		 $] =~ /(\ed+\e.\ed+).*\enPatch level: (\ed+)/;
        print STDERR "(No filename completion available.)\en"
		 if $version * 1000 + $patchlevel < 2016;

�ޤ������ͤǻȤ���ȡ�

	warn "No checksumming!\en" if $] < 3.019;

.fi
(�Ф���: ���ΥС������� perl �� right(����������) ��̤����äƤ뤫? )
.Ip $; 8 2
¿�������󥨥ߥ�졼�����κݤ�ź���ζ��ڤꡣ
Ϣ����������Ǥ򼡤Τ褦�˻��Ȥ���Ȥ���
.nf
	$foo{$a,$b,$c}

�ºݤˤ�

	$foo{join($;, $a, $b, $c)}

���̣���ޤ�����

	@foo{$a,$b,$c}		# ���饤��\*(--@ ������

�Ƚ񤤤ƤϤ����ޤ���

	($foo{$a},$foo{$b},$foo{$c})

.fi
���̣���뤳�ȤˤʤäƤ��ޤ�����Ǥ���
�ǥե���Ȥ� "\e034" �ǡ�
.IR awk
�� SUBSEP ��Ʊ���Ǥ���
�����Ȥ��ƥХ��ʥ�ǡ�����Ȥ��ȡ�$; �Ȥ��ư������ͤϤʤ��������Ȥ���
���Ȥ˵���Ĥ��Ʋ�������
(�Ф���: ����� (ʸˡ��ź���ζ��ڤ�) �ϥ��ߥ������Ⱦʬ��
����ϡ�����äȤҤɤ��͡��Ǥ⡢$, ��¾�Τ�äȽ��פʤ��Ȥ�
����Ƥ���Τǡ�)
.Ip $! 8 2
���ͤΥ���ƥ����ȤǻȤ��ȡ��̾�ηٹ��ʸ����ȶ��� errono ��
���ߤ��ͤ��֤��ޤ���
(����ϡ������ƥ२�顼�Τ褦�����̤ʥ��顼������ȡ�$! ���ͤ�
��¸����ư��򤵤��ƤϤ����ʤ��Ȥ������Ȥ��̣���ޤ���)
ʸ����Υ���ƥ����ȤǻȤ��ȡ��������륷���ƥ२�顼ʸ������֤��ޤ���
errno �򥻥åȤ��뤿��� $! ���������뤳�Ȥ��Ǥ��ޤ���
�㤨�С����顼�ֹ� n ���Ф��� $! ��ʸ������֤������Ȥ��䡢
die �黻�Ҥ˽�λ�ͤ򥻥åȤ������Ȥ��ʤɤǤ���
(�Ф���: ���β�����ȯ������? )
.Ip $@ 8 2
�Ǹ��ɾ���������ޥ�ɤ��餯�� perl ��ʸˡ���顼��å�������
�̥�ʤ顢�Ǹ��ɾ����������˲��ϡ��¹Ԥ��줿���Ȥˤʤ�ޤ�
(��ư���줿�黻�����̤η��Ǽ��Ԥ������⤷��ޤ���) ��
(�Ф���: ʸˡ���顼�Ϥɤ��� \*(L"���å� (at where)\*(R" ?)
.Ip $< 8 2
���ߤΥץ������μ� uid ��
(�Ф���: setuid �����餻�Ƥ���Ȥ���*�ɤ�����* ���� uid ����)
.Ip $> 8 2
���ߤΥץ������μ¸� uid ��
��:
.nf

.ne 2
	$< = $>;	# �¸� uid �˼� uid �򥻥åȤ��ޤ�
	($<,$>) = ($>,$<);	# �� uid �ȼ¸� uid ���괹���ޤ�

.fi
(�Ф���: setuid �����餻�Ƥ���Ȥ���*�Ԥ����* uid ��)
����: $< �� $> �� setreuid() �򥵥ݡ��Ȥ��Ƥ���ޥ���Ǥ���
�򴹤Ǥ��ޤ���
.Ip $( 8 2
���ߤΥץ������μ� gid ��
Ʊ����ʣ�����롼�פΥ��ФȤʤ뤳�Ȥ򥵥ݡ��Ȥ����ޥ���ǡ�
°���Ƥ��륰�롼�פζ�����ڤ�Υꥹ�Ȥ������ޤ���
�ǽ�ο��� getgid() ���֤���Τǡ��Ĥ꤬ getgroups() ���֤���ΤǤ���
�Ĥ����ˤϺǽ�ο��ͤ�Ʊ����Τ�ޤޤ�Ƥ��뤫�⤷��ޤ���
(�Ф���: ��̤� GROUP �˻Ȥ��롣 setgid ������ץȤ����餻�Ƥ���Ȥ���
�� gid �� LEFT(�ĤäƤ��롢��) �Υ��롼�ס�)
.Ip $) 8 2
���ߤΥץ������μ¸� gid ��
Ʊ����ʣ�����롼�פΥ��ФȤʤ뤳�Ȥ򥵥ݡ��Ȥ����ޥ���ǡ�
°���Ƥ��륰�롼�פζ�����ڤ�Υꥹ�Ȥ������ޤ���
�ǽ�ο��� getegid() ���֤���Τǡ��Ĥ꤬ getgroups() ���֤���ΤǤ���
�Ĥ����ˤϺǽ�ο��ͤ�Ʊ����Τ�ޤޤ�Ƥ��뤫�⤷��ޤ���
(�Ф���: ��̤� GROUP �˻Ȥ��롣 setgid ������ץȤ����餻�Ƥ���Ȥ���
�¸� gid �Ϥ��ʤ��� RIGHT(������������)���롼�ס�)
.Sp
����: $<, $>, $(,  $) �ϡ��������� set[re][ug]id() �롼�����
���ݡ��Ȥ��Ƥ���ޥ���Ǥ������åȤǤ��ޤ���
$( �� $) �� setregid() �򥵥ݡ��Ȥ��Ƥ���ޥ���Ǥ����򴹤Ǥ��ޤ���
.Ip $: 8 2
format �� (^ �ǻϤޤ�) ��³�ե�����ɤ�����褦��ʸ�����ʬ����
�ݤ�ľ����ʸ���󥻥åȡ�
�ǥե���Ȥ� "\ \en-" �ǡ������ϥ��ե��ʬ�����ޤ���
(�Ф���: ���Ǥ� \*(L"������\*(R" �ϹԤΰ���)
.Ip $^D 8 2
�ǥХå��ե饰�θ��ߤ��͡�
(����:
.B \-D
�����å����͡�)
.Ip $^F 8 2
���祷���ƥ�ե�����ǥ�������ץ������̾�� 2 ��
�����ƥ�ե�����ǥ�������ץ��ϡ��ҥץ��������Ϥ���ޤ�����
�������������Υե�����ǥ�������ץ����Ϥ���ޤ���
open ����֤ϡ����Ȥ� open �˼��Ԥ����Ȥ��Ƥ⡢
�����ƥ�ե�����ǥ�������ץ�����¸����ޤ���
open ����ߤ������ˡ��̾�Υǥ�������ץ��� close ����ޤ���
.Ip $^I 8 2
�ե�����򤽤ξ���ѹ�������γ�ĥ�Ҥ��͡�
���ξ���ѹ��Ǥ��ʤ��褦�ˤ���ˤϡ������ѿ��� undef ���ޤ���
(����: 
.B \-i
���������)
.Ip $^L 8 2
���ڡ������뤿��˽��Ϥ���ե����ޥåȡ��ǥե���Ȥ� \ef �Ǥ���
.Ip $^P 8 2
�ǥХå�������ʬ���Ȥ�ǥХå����ʤ�����˥��ꥢ���������ե饰��
����򥯥ꥢ���Ƥ����ȡ��ǥХå����Բ�ǽ�ˤ�������ȹͤ����ޤ���
.Ip $^T 8 2
������ץȤ�����Ϥ᤿�����epoch ������ä��ݻ����ޤ���
.B \-M ,
.B \-A ,
.B \-C
�ե�����ƥ��Ȥ��֤��줿�ͤϡ������ѿ����ͤ˴�Ť��Ƥ��ޤ���
.Ip $^W 8 2
�ٹ𥹥��å��θ��ߤ��͡�
(����: 
.B \-w
�����å��˴ط����롣)
.Ip $^X 8 2
argv[0] ������롢��ư���줿 perl ���Ȥ�̾����
.Ip $ARGV 8 3
<> �����ɤ߹���Ǥ���Ȥ����ɤ߹�����Υե�����̾���ݻ����ޤ���
.Ip @ARGV 8 3
���� ARGV �ϡ�������ץȤ��Ϥ��줿���ޥ�ɥ饤��������ݻ����ޤ���
$ARGV[0] �ϥ��ޥ��̾�ǤϤʤ����ǽ�ΰ����ʤΤǡ�$#ARGV �ϰ��̤�
�����ο� -1 �Ǥ���
���ޥ��̾�ˤĤ��Ƥϡ�$0 �򻲾Ȥ��Ʋ�������
.Ip @INC 8 3
���� INC �ϡ�
.I perl
������ץȤ� \*(L"do EXPR\*(R" �� \*(L"require\*(R" ��ɾ�������Ȥ���
õ�����٤��ǥ��쥯�ȥ�Υꥹ�Ȥ��ݻ����ޤ���
����ͤȤ��ơ�
.B \-I
���ޥ�ɥ饤�󥹥��å��ΰ�����
�����³���ǥե���Ȥ�
.I perl
�饤�֥�� (�����餯 \*(L"/usr/share/perl\*(R")��
�����³�������ȥǥ��쥯�ȥ�򼨤� \*(L".\*(R" �Ǥ���
.Ip %INC 8 3
Ϣ������ INC �ϡ�\*(L"do\*(R" �� \*(L"require\*(R" ��𤷤ƥ��󥯥롼
�ɤ����ƥե�����̾�Τ���Υ���ȥ��ޤ�Ǥ��ޤ���
�����ϡ����ꤷ���ե�����̾�ǡ��ͤϼºݤ˥ե����뤬���Ĥ��ä�
���֤��ͤǤ���
��������ϡ�\*(L"require\*(R" ���ޥ�ɤ�Ϳ����ե����뤬����
���󥯥롼�ɺѤߤ��ɤ��������Τ˻Ȥ��ޤ���
.Ip $ENV{expr} 8 2
Ϣ������ ENV �ϡ����ߤδĶ��ѿ����ݻ����Ƥ��ޤ���
ENV ���ͤ����ꤹ��ȡ��ҥץ������δĶ����Ѥ��ޤ���
.Ip $SIG{expr} 8 2
Ϣ������ SIG �ϡ��ƥ����ʥ�ϥ�ɥ�򥻥åȤ���Τ˻Ȥ��ޤ���
��:
.nf

.ne 12
	sub handler {	# �������ϥ����ʥ�̾
		local($sig) = @_;
		print "Caught a SIG$sig\-\|\-shutting down\en";
		close(LOG);
		exit(0);
	}

	$SIG{\'INT\'} = \'handler\';
	$SIG{\'QUIT\'} = \'handler\';
	.\|.\|.
	$SIG{\'INT\'} = \'DEFAULT\';	# �ǥե����ư����᤹
	$SIG{\'QUIT\'} = \'IGNORE\';	# SIGQUIT ��̵�뤹��

.fi
SIG ����ϡ�perl ������ץȤǼºݤ˥����ʥ��Ѥ˥��åȤ��줿�ͤ�
�ݻ����Ƥ��ޤ���
.Sh "�ѥå�����"
perl �ϡ��ѥå������֤ǰۤʤ�̾�����ֻ��ĥᥫ�˥�����Ѱդ��Ƥ��ꡢ
�ơ����ѿ����֤Ĥ���ʤ��褦�ˡ��ѥå��������äƤ��ޤ���
�ǥե���Ȥǡ�perl ������ץȤϥѥå����� \*(L"main\*(R" �Ȥ���
����ѥ����Ϥ�ޤ���
.I package
�����Ȥ����Ȥˤ�äơ�̾�����֤��ڤ��ؤ��뤳�Ȥ��Ǥ��ޤ���
�ѥå����������ͭ���ϰϤϡ�������켫�Ȥ��顢�Ĥ����֥��å��ν�ü�ޤ�
�Ǥ� (local() �黻�Ҥ�Ʊ��ͭ���ϰ�) ��
���� \*(L"require\*(R" �黻�Ҥˤ�ꥤ�󥯥롼�ɤ��줿�ե���������
�ǽ������Ȥ��ƻȤ��ޤ���
ʣ���ս��Ʊ��ѥå����������뤳�Ȥ�����ޤ�;
�֥��å���ǥ���ѥ��餬�ɤΥ���ܥ�ơ��֥��Ȥ����˱ƶ���������Ǥ���
¾�Υѥå��������ѿ���ե�����ϥ�ɥ�ϡ����̻Ҥ����˥ѥå�����̾��
���󥰥륯�����Ȥ��դ��뤳�Ȥǡ����ȤǤ��ޤ���
�ѥå�����̾���̥�ξ�硢\*(L"main\*(R" �Ȳ�ᤵ��ޤ���
.PP
ʸ���ǻϤޤ뼱�̻Ҥϡ��ѥå���������ܥ�ơ��֥����¸����ޤ���
����ʳ��Τ��٤ƤΥ���ܥ�ϡ��ѥå����� \*(L"main\*(R" ���ݻ�����ޤ���
���ˡ����̻� STDIN, STDOUT, STDERR, ARGV, ARGVOUT, ENV, INC, SIG �ϡ�
���Ȥ��Ȥ߹��ߤ��ѿ����ؿ��Ȱۤʤ���Ū�ǻȤ�줿�Ȥ��Ƥ⡢
����Ū�˥ѥå����� \*(L"main\*(R" ��°�����ΤȤ��ư����ޤ���
���ˡ�\*(L"m\*(R", \*(L"s\*(R", \*(L"y\*(R" �ȸƤФ��ѥå�������
���äƤ����Ȥ���ȡ��ѥ�����ޥå����������Ѵ��Ȥ��Ʋ�ᤵ���Τǡ�
���̻Ҥ�Ŭ�������ǻȤ����Ȥ��Ǥ��ʤ����Ȥ����դ��ޤ��礦��
.PP
eval ���줿ʸ����ϡ�eval ������ѥ��뤵�줿�ѥå��������
����ѥ��뤵��ޤ���
(��������$SIG{} �ؤ������ϡ�main �ѥå������ǻ��ꤵ�줿
�����ʥ�ϥ�ɥ�Ȳ�ᤵ��ޤ����ѥå�������ǥ����ʥ�ϥ�ɥ��
����������硢�����ʥ�ϥ�ɥ�̾��Ŭ�ڤ˻��ꤷ�Ʋ�������)
�㤨�С�perl �饤�֥����� perldb.pl ��Ĵ�٤Ƥߤޤ��礦��
����ϻϤ�� DB �ѥå��������ڤ��ؤ�ꡢ�ǥХå����ǥХå����褦�Ȥ���
���륹����ץ�����ѿ����ѹ����ʤ��褦�ˤʤäƤ��ޤ���
�����������������ʻ����ǡ�main �ѥå������Υ���ƥ����ȤΤ���������
����ɾ�����뤿��ˡ������ main �ѥå������˰��Ū����ä���Ƥ��ޤ���
.PP
�ѥå������Υ���ܥ�ơ��֥�ϡ��ѥå�����̾�����˲����ΤĤ���Ϣ�������
�ߤ����뤳�Ȥˤʤ�ޤ���
Ϣ������γƥ���ȥ���ͤϡ�*name ɽ����Ȥ��Ȥ��˻��Ȥ��褦��
���Ƥ����Τˤʤ�ޤ���
�ºݡ��������Ʊ������ (������� main �ѥå������ξ��) ������ޤ�����
�ǽ�Τ�Τ���������ѥ�����˥���ܥ�ơ��֥�򸫤�Τǡ�
����Ψ���ɤ��ʤ�ޤ�:
.nf

.ne 2
	local(*foo) = *bar;
	local($_main{'foo'}) = $_main{'bar'};

.fi
�㤨�С��ʲ��ˤ��ѥå�������Τ��٤Ƥ��ѿ�����ϤǤ��ޤ���
����� perl �饤�֥��� dumpvar.pl �����äƤޤ�:
.nf
.ne 11
	package dumpvar;

	sub main'dumpvar {
	\&    ($package) = @_;
	\&    local(*stab) = eval("*_$package");
	\&    while (($key,$val) = each(%stab)) {
	\&        {
	\&            local(*entry) = $val;
	\&            if (defined $entry) {
	\&                print "\e$$key = '$entry'\en";
	\&            }
.ne 7
	\&            if (defined @entry) {
	\&                print "\e@$key = (\en";
	\&                foreach $num ($[ .. $#entry) {
	\&                    print "  $num\et'",$entry[$num],"'\en";
	\&                }
	\&                print ")\en";
	\&            }
.ne 10
	\&            if ($key ne "_$package" && defined %entry) {
	\&                print "\e%$key = (\en";
	\&                foreach $key (sort keys(%entry)) {
	\&                    print "  $key\et'",$entry{$key},"'\en";
	\&                }
	\&                print ")\en";
	\&            }
	\&        }
	\&    }
	}

.fi
���Ȥ����֥롼���󤬥ѥå����� dumpvar �ǥ���ѥ��뤵���Ȥ��Ƥ⡢
���֥롼����̾���ѥå����� \*(L"main\*(R" �����������褦�ˡ�
���֥롼����̾�����˥ѥå�����̾��Ĥ��ʤ���Фʤ�ʤ����Ȥ����դ���
��������
.Sh "��������"
�ơ��Υץ�����ޤϡ��ե����ޥåȤ˴ؤ��Ƥ������ʬ���Ȥι��ߤ�
����Ǥ��礦������ʬ�Υץ��������ɤ߰פ����뤿��ΰ���Ū��
�����ɥ饤�󤬤���ޤ���
.Ip 1. 4 4
���뤳�Ȥ����̤���ˡ��*�Ǥ���*����Ȥ��äơ��������ʤ���Фʤ�ʤ�
�Ȥ������ȤϤ���ޤ���
.I perl
�ϡ���ĤΤ��Ȥ򤹤�Ȥ��ˡ����Ĥ�����ˡ������褦���߷פ���Ƥ���
�Τǡ��Ǥ��ɤ߰פ���Τ����֤褦�˹ͤ��Ʋ�������
�㤨��

	open(FOO,$foo) || die "Can't open $foo: $!";

�ϡ�

	die "Can't open $foo: $!" unless open(FOO,$foo);

�����ɤ��Ǥ����ʤ��ʤ顢��Ԥ���ˡ��ʸ�μ���򽤾�����˱����Ƥ��뤫��Ǥ���
������

	print "Starting analysis\en" if $verbose;

��

	$verbose && print "Starting analysis\en";

����ɤ��Ǥ�����Ȥʤ�Τϡ��桼���� -v ���Ǥä����ɤ����Ǥ�
�ʤ�����Ǥ���
.Sp
Ʊ�ͤˡ��黻�Ҥ��ǥե���Ȥΰ������ꤷ�Ƥ��뤫��Ȥ��äơ�
����ϥǥե���Ȥ��Ѥ��ʤ���Фʤ�ʤ��Ȥ������ȤǤϤ���ޤ���
�ǥե���ȤȤ�����Τϡ�����äȤ����ץ�������񤯡��դ��Ԥ�
�����ƥ�ץ�����ޤΤ���ˤ���ޤ���
�ɤ߰פ��ץ������򤷤�����С��������դ���褦�ˤ��Ʋ�������
.Sp
Ʊ���褦�ʤ��ȤȤ��ơ�
���������dz�̤��ά
.I �Ǥ���
�Ȥ������Ȥϡ��ʲ��Τ褦�˽񤱤Ȥ������ȤǤϤ���ޤ���:
.nf

	return print reverse sort num values array;
	return print(reverse(sort num (values(%array))));

.fi
���路���Ȥ��ϡ���̤�Ĥ��Ʋ�������
�⤷������ȡ�ʪ�������ڤ���vi �� % ������á�����⤷��ޤ���
.Sp
���Ȥ����路���ʤ��ä��Ȥ��Ƥ⡢��ʬ�θ�Ǥ��Υ����ɤ��������ʹ֤�
���������幥�ޤ����Ǥ��������οͤ��ְ�ä��Ȥ����˳�̤�Ĥ����ǽ����
�礤�ˤ���ޤ���
.Ip 2. 4 4
̵���ˤ����Ĥ��ơ��롼�פ���Ƭ�佪���ǽ�λ���褦�Ȥ��ʤ��Dz�������
.I perl
�ˤϡ������椫��Ǥ�ȴ������褦�� "last" �黻�Ҥ�
�Ѱդ���Ƥ���ΤǤ����顣
�����Ϥ߽Ф��Ƥ⡢��긫�פ��ʤ�褦�ˤ��Ʋ�����:
.nf

.ne 7
    line:
	for (;;) {
	    statements;
	last line if $foo;
	    next line if /^#/;
	    statements;
	}

.fi
.Ip 3. 4 4
�롼�ץ�٥��Ȥ��Τ򶲤���ʤ��Dz�����\*(--¿�ť롼�פ�ȴ����������
����褦�ˤ��뤿������Ǥʤ�������������뤿��ˤ���ΤǤ����顣
�Ǹ����򻲾Ȥ��Ʋ�������
.Ip 4. 4 4
�������Τ��ᡢ���٤ƤΥޥ���ˤϼ�������Ƥ��ʤ���ǽ��Ȥ��Ȥ��ϡ�
���Ԥ��ʤ����ɤ�����eval ����ǹ�����Τ���ƤߤƲ�������
�ɤΥС�������ѥå���٥������λ��ͤ���������Ƥ��뤫��
�ΤäƤ���ʤ顢$] ��Ĵ�٤ơ���������Ƥ��뤫�ɤ������ǧ�Ǥ��ޤ���
.Ip 5. 4 4
�Ф��פ����̻Ҥ�����Dz�������
.Ip 6. 4 4
�������������ޤ��礦��
.Sh "�ǥХå�"
.I perl
��
.B \-d
�����å����դ��Ƶ�ư����ȡ��ǥХå���˥��δ�ǥ�����ץȤ�����ޤ���
�ǽ�μ¹�ʸ�����ǰ����ߤ����ʲ��Τ褦�ʥ��ޥ�����Ϥ�¥���ޤ�:
.Ip "h" 12 4
�إ�ץ�å���������Ϥ��롣
.Ip "T" 12 4
�����å��ȥ졼����
.Ip "s" 12 4
���󥰥륹�ƥåס�
����ʸ�λϤ��ã����ޤǤ�¹Ԥ��ޤ���
.Ip "n" 12 4
����
���֥롼���󥳡�����Ǥϻߤޤ餺�ˡ�����ʸ��ã����ޤǼ¹Ԥ��ޤ���
.Ip "f" 12 4
���
���ߤΥ��֥롼���󤬽�λ����ޤǡ�ʸ��¹Ԥ�³���ޤ���
.Ip "c" 12 4
��³��
���Υ֥졼���ݥ���Ȥ�ã����ޤǼ¹Ԥ��ޤ���
.Ip "c line" 12 4
���ꤷ���ԤޤǼ¹Ԥ��ޤ���
���ꤷ���Ԥˡ���󤭤�Υ֥졼���ݥ���Ȥ��������ޤ���
.Ip "<CR>" 12 4
�Ǹ�˼¹Ԥ��� n �ޤ��� s �򷫤��֤��ޤ���
.Ip "l min+incr" 12 4
min ���ܤ��� incr+1 �Ԥ�ɽ�����ޤ���
min ���ά����ȡ��Ǹ��ɽ�������Ĥ꤫��Ϥ�ޤ���
incr ���ά����ȡ������ incr �ͤ��Ȥ��ޤ���
.Ip "l min-max" 12 4
�����ϰ���ιԤ�ɽ�����ޤ���
.Ip "l line" 12 4
����Ԥ�ɽ�����ޤ���
.Ip "l" 12 4
���Υ�����ɥ���ɽ�����ޤ���
.Ip "-" 12 4
���Υ�����ɥ���ɽ�����ޤ���
.Ip "w line" 12 4
���ιԤ�����Υ�����ɥ���ɽ�����ޤ���
.Ip "l subname" 12 4
���֥롼�����ɽ�����ޤ���
Ĺ�����֥롼����ξ��ϡ��Ϥ����������ɽ�����ޤ���
����ʾ�ɽ������ˤϡ�\*(L"l\*(R" ��ȤäƲ�������
.Ip "/pattern/" 12 4
����ɽ���������������Ǹ�� / �Ͼ�ά��ǽ�Ǥ���
.Ip "?pattern?" 12 4
����ɽ���θ����������Ǹ�� ? �Ͼ�ά��ǽ�Ǥ���
.Ip "L" 12 4
�֥졼���ݥ���Ȥޤ��ϥ������������ꤵ�줿�Ԥ�ɽ�����ޤ���
.Ip "S" 12 4
���٤ƤΥ��֥롼����̾��ɽ�����ޤ���
.Ip "t" 12 4
�ȥ졼���⡼�ɤ� on/off ����ȥ��롣
.Ip "b line condition" 12 4
�֥졼���ݥ���Ȥ򥻥åȤ��ޤ���
line ���ά����ȡ��¹Ԥ���褦�Ȥ��Ƥ���Ԥ˥��åȤ���ޤ���
condition �����ꤵ���ȡ�
�֥졼���ݥ���Ȥ�ʸ��ã������� condition ��ɾ�����졢
condition �����ΤȤ������֥졼�����ޤ���
�֥졼���ݥ���Ȥϼ¹�ʸ����Ƭ�ˤ������åȤǤ��ޤ���
.Ip "b subname condition" 12 4
�֥졼���ݥ���Ȥ򥵥֥롼����κǽ�μ¹�ʸ�˥��åȤ��ޤ���
.Ip "d line" 12 4
�֥졼���ݥ���Ȥ������ޤ���
line ���ά����ȡ��¹Ԥ��褦�Ȥ��Ƥ���ԤΥ֥졼���ݥ���Ȥ�
�������ޤ���
.Ip "D" 12 4
���٤ƤΥ֥졼���ݥ���Ȥ������ޤ���
.Ip "a line command" 12 4
�Ԥ˥��������򥻥åȤ��ޤ���
�Хå�����å����ľ��˲��Ԥ���С�ʣ���ԥ��ޥ�ɤ����ϤǤ��ޤ���
.Ip "A" 12 4
���٤ƤιԤΥ��������������ޤ���
.Ip "< command" 12 4
�ǥХå����ץ���ץȤ�Ф����˼¹Ԥ��륢�������򥻥åȤ��롣
�Хå�����å����ľ��˲��Ԥ���С�ʣ���ԥ��ޥ�ɤ����ϤǤ��ޤ���
.Ip "> command" 12 4
���ޥ�ɤ����Ϥ��ƥ�����ץȼ¹Ԥ˰ܤ���ˡ�
�ץ���ץȤθ�˼¹Ԥ��륢�������򥻥åȤ��ޤ���
�Хå�����å����ľ��˲��Ԥ���С�ʣ���ԥ��ޥ�ɤ����ϤǤ��ޤ���
.Ip "V package" 12 4
�ѥå�������Τ��٤Ƥ��ѿ���ꥹ�Ȥ��ޤ���
�ǥե���Ȥϡ��ᥤ��ѥå������Ǥ���
.Ip "! number" 12 4
�ǥХå����ޥ�ɤκƼ¹Ԥ�Ԥʤ��ޤ���
number ����ά�����ȡ�ľ���Υ��ޥ�ɤ�Ƽ¹Ԥ��ޤ���
.Ip "! -number" 12 4
���Ĥ����Υ��ޥ�ɤ�Ƽ¹Ԥ��ޤ���
.Ip "H -number" 12 4
�Ǹ�� n �ĤΥ��ޥ�ɤ�ɽ�����ޤ���
1 ʸ�����Ĺ�����ޥ�ɤ�ꥹ�Ȥ��ޤ���
number ���ά����ȡ����٤Ƥ�ꥹ�Ȥ��ޤ���
.Ip "q or ^D" 12 4
��λ���ޤ���
.Ip "command" 12 4
���ޥ�ɤ� perl ��ʸ�Ȥ��Ƽ¹Ԥ��ޤ���
­��ʤ����ߥ����������ޤ���
.Ip "p expr" 12 4
\*(L"print DB'OUT expr\*(R" ��Ʊ�����ȤǤ���
DB'OUT �ե�����ϥ�ɥ�ϡ��ɤ��� STDOUT ��������쥯�Ȥ���Ƥ��뤫
�˴ؤ�餺��/dev/tty �˥����ץ󤵤�ޤ���
.PP
�ǥХå����ѹ��������Ȥ��ϡ�perldb.pl �ե������ perl �Υ饤�֥��
���顢�����ȥǥ��쥯�ȥ�˥��ԡ����ơ�ɬ�פ˱����ƽ������Ʋ�������
(���ޥ�ɥ饤��� -I. ���դ��ʤ���Фʤ�ʤ��Ǥ��礦��)
����������ɤ�ޤ� .perldb �ե���������ꤹ�뤳�Ȥǡ��������ޥ�����
�Ǥ��ޤ����㤨�С��ʲ��Τ褦�ʥ����ꥢ�����뤳�Ȥ��Ǥ��ޤ�:
.nf

    $DB'alias{'len'} = 's/^len(.*)/p length($1)/';
    $DB'alias{'stop'} = 's/^stop (at|in)/b/';
    $DB'alias{'.'} =
      's/^\e./p "\e$DB\e'sub(\e$DB\e'line):\et",\e$DB\e'line[\e$DB\e'line]/';

.fi
.Sh "setuid ������ץ�"
.I perl
�ϡ������� setuid ������ץȤ� setgid ������ץȤ��ñ�˽񤱤�褦��
�ǥ����󤵤�Ƥ��ޤ���
������ץȤγƹԤ�������ִ�����륷����Ȥϰ�äơ�
.I perl
�ϡ������줿 \*(L"�櫓��Ƚ��ʤ����\*(R" �򾯤ʤ����ơ��������Ū��
ɾ��������ȤäƤ��ޤ���
����˲ä������θ�����Ȥ߹��ߵ�������¿�������Ƥ��ơ���Ū��ã������
����˳����� (���ʤ������Ǥ��ʤ���ǽ��������) �ץ�������
���ʤ���Фʤ�ʤ����Ȥϡ��ۤȤ�ɤ���ޤ���
.PP
�ѥå��������äƤ��ʤ� 4.2 �ޤ��� 4.3bsd �����ͥ�Ǥϡ�
setuid ������ץȤ��ܼ�Ū�˴�����Ϥ��Ǥ��ޤ��������Υ����ͥ��
��ǽ��̵���ˤǤ��ޤ���
���ξ�硢
perl ������ץȤ� (̵��̣��) setuid/gid �ӥåȤ��դ��Ƥ���ȡ�
.I perl
�� setuid �� setgid �����򥨥ߥ�졼�ȤǤ��ޤ���
�����ͥ�ε�ǽ��̵���Ǥʤ���硢
.I perl
�� setuid ������ץȤ������Ǥʤ����Ȥ򤦤뤵���ʤ���Ǥ��礦��
�����ͥ�� setuid ������ץȵ�ǽ��̵���ˤ��뤫�������Ǥʤ����
������ץȤ� C �Υ�åѤ򤫤֤���ɬ�פ�����Ǥ��礦��
.PP
perl �� setuid ������ץȤ�¹Ԥ��Ƥ���Ȥ������餫�ʥȥ�åפ�
�Ϥޤ�ʤ��褦�����̤����դ�ʧ���ޤ���
(�����Ĥ������ǡ�perl ������ץȤ�Ʊ���� C �ץ������������Ǥ���)
���ޥ�ɥ饤������ȴĶ��ѿ������Ϥϡ�\*(L"����\*(R" �Ȥߤʤ��졢
���֥������ư���륳�ޥ�ɤ䡢�ե����롢�ǥ��쥯�ȥꡢ�ץ�������
�ѹ�����褦�ʥ��ޥ�ɤ���Ǥϡ�ľ�ܤˤ����Ū�ˤ�Ȥ��ޤ���
��������˱��줿�ͤ򻲾Ȥ����褦�ʼ�����ǥ��åȤ��줿�ѿ��⡢
�ޤ�����Ƥ��뤳�Ȥʤ�ޤ���
(���줿�ͤ��ѿ��˱ƶ����뤳�Ȥ������Ȥ�����Ū���Բ�ǽ���Ȥ��Ƥ�)
.br
�㤨��:
.nf

.ne 5
	$foo = shift;			# $foo �ϱ���Ƥ��ޤ�
	$bar = $foo,\'bar\';		# $bar �����Ƥ��ޤ�
	$xxx = <>;			# ����Ƥ��ޤ�
	$path = $ENV{\'PATH\'};	# ����Ƥ��ޤ������ʲ��򸫤Ʋ�����
	$abc = \'abc\';			# ����Ƥ��ޤ���

.ne 4
	system "echo $foo";		# �����Ǥ�
	system "/bin/echo", $foo;	# �����Ǥ� (sh��Ȥ�ʤ��Τ�)
	system "echo $bar";		# �����Ǥ�
	system "echo $abc";		# PATH �����åȤ����ޤǡ�
					# �����ǤϤ���ޤ���

.ne 5
	$ENV{\'PATH\'} = \'/bin:/usr/bin\';
	$ENV{\'IFS\'} = \'\' if $ENV{\'IFS\'} ne \'\';

	$path = $ENV{\'PATH\'};		# ����Ƥ��ޤ���
	system "echo $abc";		# ��Ϥ����Ƥ��ޤ���!

.ne 5
	open(FOO,"$foo");		# OK
	open(FOO,">$foo"); 		# ���ܤǤ�

	open(FOO,"echo $foo|");	# ���ܤ�����..
	open(FOO,"-|") || exec \'echo\', $foo;	# OK

	$zzz = `echo $foo`;		# ������ zzz �ϱ���Ƥޤ���

	unlink $abc,$foo;		# ����
	umask $foo;			# ����

.ne 3
	exec "echo $foo";		# ����
	exec "echo", $foo;		# ���� (sh ��Ȥ��ޤ���)
	exec "sh", \'-c\', $foo;	# �����ȸ��ʤ���Ƥ��ޤ����˸�

.fi
����ϡ��ƥ������ͤȴط�����Τǡ���������Ǥϱ���Ƥ����Τ⡢
����Ƥ��ʤ���Τ⤢��ޤ���
.PP
���������Ǥʤ����Ȥ򤷤褦�Ȥ���ȡ�
\*(L"Insecure dependency\*(R" �Ȥ� \*(L"Insecure PATH\*(R" �Ȥ����褦��
��̿Ū���顼�ˤʤ�ޤ���
����Ǥ⡢�����ʥ����ƥॳ����� exec ��񤯤��Ȥ��Ǥ��ޤ�����
�嵭�κǸ����Τ褦�ʤ��Ȥ�����Ū�˹Ԥʤä����˸¤�Ȥ������Ȥ�
�Ф��Ƥ����Ʋ�������
���֥ѥ�����򻲾Ȥ��뤳�ȤǤ⡢����ε������򤱤뤳�Ȥ�
�Ǥ��ޤ� \*(--\c
.I perl
�ϡ�$1, $2 �ʤɤ�Ȥä���ʬʸ����λ��ȤǤϡ���ʬ�Τ��Ƥ��뤳�Ȥ�
�ΤäƤ���Ϥ����Ȳ�ᤷ�ޤ���
���Τ褦�ʥѥ�����ξ��Ǥ�:
.nf

	$ARGV[0] =~ /^\-P(\ew+)$/;
	$printer = $1;		# ����Ƥ��ޤ���

.fi
����ϡ�\ew+ ��������Υ᥿����饯���˥ޥå����ʤ��Τǡ�
�ޤ������Ǥ��� .+ ��Ȥ��ȴ����Ǥ��礦����
.I perl
�Ϥ����ޤ�Ĵ�٤ʤ��Τǡ��ѥ��������ˤ����դ�ʧ���٤��Ǥ���
����ϡ��ե��������򤷤����Ȥ��� ($> �� $< ��Ʊ���ˤ��ʤ����) ��
�桼����Ϳ����ե�����̾������ʤ������ͣ��ε����Ǥ���
.PP
���줿�ͤ�Ȥ����Ȥ򵤤ˤ��ʤ��褦��¾�����Ǥ�ȥ�֥�򵯤�����礬
����ޤ���
�桼����Ϳ�����ե�����̾�򰷤��ե�����ƥ��Ȥϡ����Ť˻ȤäƲ�������
�Ǥ���С�$> = $< �Ȥ����褦�˥��åȤ������ open ���Ʋ�������
.I perl
�Ǥϡ����줿�ե�����򥪡��ץ󤷤��ɤߤ������Ȥ����¤���ʤ��Τǡ�
���Ϥ������ƤˤĤ��Ƥ����դ��Ʋ�������
����ε����ϡ��Ф��ʴְ㤤���ɤ��褦�˺���Ƥ���ΤǤ��äơ�
�ͤ���ɬ�פ��ʤ��ʤ�褦�ˤ��뤿��ǤϤ���ޤ���
.SH ��
.Ip HOME 12 4
chdir �˰������ʤ��Ȥ��˻Ȥ��ޤ���
.Ip LOGDIR 12 4
chdir �˰�����̵����HOME �����åȤ���Ƥ��ʤ��Ȥ��˻Ȥ��ޤ���
.Ip PATH 12 4
���֥ץ�������¹Ԥ���Ȥ�������� \-S ���Ȥ�줿�Ȥ���
������ץȤ�õ���ݤ˻Ȥ��ޤ���
.Ip PERLLIB 12 4
ɸ��饤�֥��䥫���ȥǥ��쥯�ȥ�򸫤����ˡ�perl �饤�֥��
�ե������õ���ǥ��쥯�ȥ�Υ�������ڤ�Υꥹ�ȤǤ���
.Ip PERLDB 12 4
�ǥХå������ɤ�����Τ˻Ȥ��륳�ޥ�ɤΤ��ȤǤ������åȤ����
���ʤ��ȡ�
.br

	require 'perldb.pl'

��Ȥ��ޤ���
.PP
�������̤ˤ���ȡ�
.I perl
�ϡ�������ץȼ¹Ի��Ȼҥץ��������Ϥ��줿�Ķ��ѿ������Ȥ��ޤ���
��������setuid �����äƤ��륹����ץȤϡ����ޤ���ʤ��褦�ˤ��뤿���
�������˰ʲ��ιԤ�¹Ԥ��Ƥ����������ɤ��Ǥ��礦:
.nf

.ne 3
    $ENV{\'PATH\'} = \'/bin:/usr/bin\';    # ɬ�פʥѥ�������ޤ��礦
    $ENV{\'SHELL\'} = \'/bin/sh\' if $ENV{\'SHELL\'} ne \'\';
    $ENV{\'IFS\'} = \'\' if $ENV{\'IFS\'} ne \'\';

.fi
.SH ���
Larry Wall <lwall@netlabs.com>
.br
MS-DOS �ؤΰܿ� Diomidis Spinellis <dds@cc.ic.ac.uk>
.SH ��Ϣ�ե�����
/tmp/perl\-eXXXXXX	
.B \-e
���ޥ�ɤΤ���Υƥ�ݥ��ե�����
.SH ��Ϣ����
a2p	awk ���� perl �ؤ��Ѵ��ץ������
.br
s2p	sed ���� perl �ؤ��Ѵ��ץ������
.SH ����
����ѥ��륨�顼�ϡ����顼�ι��ֹ�ȼ��ˤ���٤��ȡ����󤫡��ޤ���
Ĵ�٤�줿�ȡ�����η��򶵤��Ƥ���ޤ���
(
.B \-e
�������
.I perl
���Ϥ��줿������ץȤξ�硢��
.B \-e
����Ԥ˿������ޤ���)
.PP
setuid ������ץȤˤϡ����� \*(L"Insecure dependency\*(R" �Τ褦��
���顼��å�������������Ȥ������󤬤���ޤ���
setuid ������ץȤΥ��������򻲾Ȥ��Ʋ�������
.SH �ȥ�å�
.IR awk
�˴��줿�桼���ϡ��ʲ��Τ��Ȥ��ä����դ�ʧ��ʤ���Фʤ�ޤ���:
.Ip * 4 2
.I perl
�Ǥϡ�(�֥��å��ν��������) ���٤Ƥ�ñʸ�θ�˥��ߥ�����ɬ�פǤ���
���Ԥ�ʸ�ζ��ڤ�ǤϤ���ޤ���
.Ip * 4 2
if �� while �ˤϡ����� {} ��ɬ�פǤ���
.Ip * 4 2
.IR perl
�Ǥϡ��ѿ��� $ �� @ �ǻϤޤ�ޤ���
.Ip * 4 2
�����ź���ϡ�$[ �򥻥åȤ��ʤ���� 0 �ǻϤޤ�ޤ���
substr() �� index() ��ʸ�����֤�Ʊ�ͤǤ���
.Ip * 4 2
�����ź���������Ǥ��뤫ʸ����Ǥ��뤫����ʤ���Фʤ�ޤ���
.Ip * 4 2
Ϣ������ϡ����Ȥ�������Ǥ�¸�ߤ��뤳�Ȥˤʤ�ޤ���
.Ip * 4 2
��Ӥκݤˤϡ�ʸ������Ӥ���������Ӥ�����ʤ���Фʤ�ޤ���
.Ip * 4 2
���ϹԤ��ɤ߹���������Ǥϡ�split �ϹԤʤ��ޤ��󡣼�ʬ�� split ���ơ�
���������ʤ���Фʤ�ޤ���
�����ơ�
.I split
�黻�Ҥϡ��ۤʤ��������ޤ���
.Ip * 4 2
���ߤ����ϹԤϡ��̾� $0 �ǤϤʤ� $_ �Ǥ���
���̤˲��ԥ����ɤϽ�����ޤ���
($0 �ϼ¹Ԥ��줿�ץ������̾�Ǥ���)
.Ip * 4 2
$<����> �ϡ��ե�����ɤλ��ȤǤϤ���ޤ���\*(--�Ǹ�˥ޥå�����
�ѥ��������ʬʸ����򻲾Ȥ��ޤ���
.Ip * 4 2
.I print
ʸ�� $, �� $\e �����ꤷ�ʤ���С��ե�����ɶ��ڤ��쥳���ɶ��ڤ��
���Ϥ��ޤ���
.Ip * 4 2
�ե�����˽��Ϥ������ˤϡ������ץ󤷤ʤ���Фʤ�ޤ���
.Ip * 4 2
�ϰϱ黻�Ҥ� \*(L".\|.\*(R" �Ǥ��äơ�����ޤǤϤ���ޤ���
(����ޱ黻�Ҥϡ�C ��Ʊ��ư��Ǥ���)
.Ip * 4 2
�ޥå��黻�Ҥϡ�\*(L"~\*(R" �Ǥʤ� \*(L"=~\*(R" �Ǥ���
(\*(L"~\*(R" �� C ��Ʊ��������α黻�ҤǤ���)
.Ip * 4 2
�ؿ��黻�Ҥϡ�\*(L"^\*(R" �Ǥʤ� \*(L"**\*(R" �黻�ҤǤ���
(\*(L"^\*(R" �ϡ�C ��Ʊ���� XOR �黻�ҤǤ���)
.Ip * 4 2
���黻�Ҥ� \*(L".\*(R" �Ǥ��ꡢ�̥�ʸ����ǤϤ���ޤ���
(�̥�ʸ�����Ȥ��� 3 ���ܤ� / �������黻�ҤȲ�ᤵ��뤿�ᡢ
\*(L"/pat/ /pat/\*(R" ��������ǽ�ˤʤ�ޤ���\*(--�ȡ�������Ϥϡ��º�
�ΤȤ��� /, ?, < �Τ褦�ʱ黻�ҤǤϥ���ƥ����Ȥˤ���Ҵ��Ǥ���
�����ơ��¤ϡ�. ���ȤϿ����λϤ�ˤʤ����ޤ���)
.Ip * 4 2
.IR next ,
.IR exit,
.I continue
��ư��ϰۤʤ�ޤ���
.Ip * 4 2
�����ѿ���ư��ϰۤʤ�ޤ���
.nf

	  Awk	\h'|2.5i'Perl
	  ARGC	\h'|2.5i'$#ARGV
	  ARGV[0]	\h'|2.5i'$0
	  FILENAME\h'|2.5i'$ARGV
	  FNR	\h'|2.5i'$. \- ����
	  FS	\h'|2.5i'(���Ǥ�褤)
	  NF	\h'|2.5i'$#Fld �����Τ褦�ʤ��
	  NR	\h'|2.5i'$.
	  OFMT	\h'|2.5i'$#
	  OFS	\h'|2.5i'$,
	  ORS	\h'|2.5i'$\e
	  RLENGTH	\h'|2.5i'length($&)
	  RS	\h'|2.5i'$/
	  RSTART	\h'|2.5i'length($\`)
	  SUBSEP	\h'|2.5i'$;

.fi
.Ip * 4 2
���路���Ȥ��ϡ�
.I awk
�Υץ������� a2p ���̤��ơ��Ф��褿��θ��Ʋ�������
.PP
C ����Ǿ���줿�ץ�����ޤϡ����Τ��Ȥ��ä˿���α��Ƥ����ʤ���Фʤ��
����:
.Ip * 4 2
if �� while �ˤϡ����� {} ��ɬ�פǤ���
.Ip * 4 2
\*(L"else if\*(R" �Ǥʤ���\*(L"elsif\*(R" ��Ȥ�ʤ���Фʤ�ޤ���
.Ip * 4 2
.I break
��
.I continue
�ϡ����줾��
.I last
��
.IR next
�ˤʤ�ޤ���
.Ip * 4 2
switch ʸ�Ϥ���ޤ���
.Ip * 4 2
.IR perl
�Ǥϡ�
�ѿ��� $ �� @ �ǻϤޤ�ޤ���
.Ip * 4 2
printf �ˤ� * �ϼ�������Ƥ��ޤ���
.Ip * 4 2
�����Ȥϡ�/* �Ǥʤ� # �ǻϤޤ�ޤ���
.Ip * 4 2
���ԤΥ��ɥ쥹�����뤳�Ȥ�Ǥ��ޤ���
.Ip * 4 2
ARGV ����ʸ���Ǥʤ���Фʤ�ޤ���
.Ip * 4 2
link, unlink, rename ���Υ����ƥॳ����ϡ��������� 0 �Ǥ�
������ 0 ���֤��ޤ���
.Ip * 4 2
�����ʥ�ϥ�ɥ�ϡ������ǤϤʤ������ʥ�̾�򰷤��ޤ���
.PP
�и�˭����
.I sed
�ץ�����ޤϡ����Τ��Ȥ򿴤�α��Ƥ����ʤ���Фʤ�ޤ���:
.Ip * 4 2
�ִ��θ������ȤǤϡ�\e �Ǥʤ� $ ��Ȥ��ޤ���
.Ip * 4 2
�ѥ�����ޥå��᥿����饯�� (, ), | �����ˤϥХå�����å����Ĥ��ޤ���
.Ip * 4 2
�ϰϱ黻�Ҥϡ�����ޤǤʤ� .\|. �Ǥ���
.PP
�Ԥ� shell �ץ�����ޤϡ����Τ��Ȥ򿴤�α��Ƥ����ʤ���Фʤ�ޤ���:
.Ip * 4 2
`` �黻�ҤΥ��ޥ����Ǥϡ�'' �ˤ������Ƥ��ʤ����ѿ��ִ����Ԥʤ��ޤ���
.Ip * 4 2
`` �黻�Ҥ� csh �Ȱ�äơ�����ͤ��Ѵ��򤷤ޤ���
.Ip * 4 2
������ (�ä� csh) �ϡ��ƥ��ޥ�ɹԤ�ʣ����٥���ִ���Ԥʤ��ޤ���
.I perl
�ϡ�"", ``, <>, // �Τ褦�ʷ�ޤä���¤�ˤ����ƤΤߡ��ִ����Ԥʤ��ޤ���
.Ip * 4 2
������ϡ�������ץȤ���٤˾���������ᤷ�ޤ���
.I perl
�ϡ����٤ƤΥץ�������¹����˥���ѥ��뤷�ޤ���
.Ip * 4 2
�����ϡ�$1, $2,.. �ǤϤʤ���@ARGV ��𤷤����ѤǤ��ޤ���
.Ip * 4 2
�Ķ��ϡ��ѿ��Ȥ��Ƽ�ưŪ�����Ѳ�ǽ�ȤϤʤ�ޤ���
.SH �������ɲ�
perl ���ܡ�
.I Programming\0Perl
�ˤϰʲ��Τ褦�ʾ�ά��ȴ��������ޤ���
.PP
5 �ڡ�������
.nf

	eval "/usr/bin/perl

�ϡ��ʲ��Ǥʤ���Ф����ޤ���

	eval "exec /usr/bin/perl

.fi
.PP
195 �ڡ����� System V �� sum �����Υץ������ϡ��ˤ�ƾ����ʥե�����
�Ǥ���ư��ޤ����礭�ʥե�����Ǥϡ��ʲ���ȤäƲ�������
.nf

	undef $/;
	$checksum = unpack("%32C*",<>) % 32767;

.fi
.PP
alarm �� sleep �˴ؤ��뵭�Ҥϡ������ʥ� SIGALARM �ȸ��äƤ��ޤ�����
SIGALRM �Ǥʤ���Фʤ�ޤ���
.PP
$/ �ν���ͤ򥻥åȤ���
.B \-0
�����å��ϡ������ܤ����Ǹ�� perl ���ɲä���ޤ�����
.PP
.B \-l
�����å��Ǥϡ���ư����������Ԥʤ��褦�ˤʤäƤ��ޤ���
.PP
qx// ��¤�� �Хå�����å��� `` ��Ʊ���Ǥ���
.PP
$0 �ϡ�
.I ps (1)
�ΰ���ɽ�����ѹ����뤿��ˡ�������ǽ�Ȥʤ�ޤ�����
.PP
������ @###.## �ե����ޥåȤϡ��ե����ޥåȤε��Ҥ���
������ά����ޤ�����
.PP
s///ee ���ִ�����¿��ɾ���������뤳�Ȥ������ǻ���
�Τ��Ƥ��ޤ���Ǥ���������ϡ����ͤȲ�ᤵ���٤��Ǥ���
.PP
(LIST) x $count �ϡ�����η����֤���¹Ԥ��ޤ���
.PP
����ɽ���ˤϡ���̤ο������¤��ʤ��ʤäƤ��ޤ���
.PP
���֥륯������ "" �Υ���ƥ����ȤǤϡ����˰ʲ��Υ��������פ����ݡ���
����Ƥ��ޤ�:
\ee, \ea, \ex1b, \ec[, \el, \eL, \eu, \eU, \eE
�Ǹ�� 5 �Ĥ����楳���ɤϡ���ʸ����ʸ�����Ѵ��Ǥ���
.PP
.B $/
�ѿ��ˤϡ�ʣ���ζ��ڤ�ʸ���򥻥åȤǤ��ޤ���
.PP
�̾�Υѥ�����ޥå��� g �����Ҥ��Ȥ��ޤ���
����ˤ�ꡢʸ���󤫤�ʣ���Υޥå��򸡺����뤳�Ȥǡ�
�ѥ�����ޥå��򷫤��֤��ޤ���
.PP
$^T ������ơ����٤Ƥ� $^X �ѿ��������Ƥޤ���
.PP
FILEHANDLE ���Ф���ǥե���ȤΥڡ�����Ƭ�ե����ޥåȤϡ�top �Ǥʤ�
FILEHANDLE_TOP �ˤʤäƤ��ޤ���
.PP
eval {} �� sort {} ��¤�ϡ�version 4.018 ���ɲä���ޤ�����
.PP
pack �� unpack �� v �� V (��ȥ륨��ǥ�����) �ƥ�ץ졼�ȥ��ץ����ϡ�
vertion 4.019 ���ɲä���ޤ�����
.SH �Х�
.PP
.I perl
���Υ��㥹�ȡ�atof() ��sprintf() �Τ褦�ʤ������������ϡ�
�ޥ��������˺�������ޤ���
.PP
���륹�ȥ꡼��ǡ�stdio ���� read �� write �δ֤� seek �� eof ��
ɬ�פȤ����硢
.IR perl
�Ϥ��Τ褦�ˤ��ޤ���
(����ϡ�sysread() �� syswrite() �ˤ�Ŭ�Ѥ���ޤ���)
.PP
�ɤ��Ȥ߹��ߥǡ��������פ⾡��ʥ��������¤ϻ��äƤ��ޤ���
(���ꥵ�������̤Ǥ�) ��������Ǥ⤤���餫�ϸ³��Ϥ���ޤ�:
���̻Ҥ� 255 ʸ���ʾ�ˤϤǤ��ޤ��󤷡�
\-S ��Ȥ��Ȥ���PATH �����Ǥ� 255 ��Ķ���ƤϤ����ޤ���
����ɽ���ϡ�����Ū�� 32767 �Х��Ȥ�Ķ�����ޤ���
.PP
.I perl
�ϡ��¤�
������Ū�������Τ��餯���ꥹ���� (Pathologically Eclectic Rubbish Lister)
�ʤ�Ǥ������䤬�������ä��Ȥ�ï�ˤ��ä��ʤ��Dz�������
.rn }` ''