.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 }` ''