![]() |
![]() |
������� | ������������ | ����� | ������ | �������� | ![]() |
![]() |
���� | ��������� | ������ | �������� ����� | ����� | ||
������� ![]() ![]() ![]()
|
���� ��� ������������
��������� ��������, �������� � ����.��� ������ ����� � ��������������� ����, �� ����� �������� ��� ����, ���� ������������ ��� ����-��� (��� ���� � ��� �������) ������, � ���� ���� ������. ��� ��, �� ���������� �������� �������� �� ����, � ������� ������� ���� ����������� ��� , ��� ���� �������. � ��� ����� ������ � ����� ������� (����������) �����. � ���� - ���� ��� ������ (������, ��贳������� ����) � ���� ��� �������� (MacPerl). MacPerl � ���� ����������� � ������ ��������� �� ������� �������, � ���� ���� ����� (���, �� MS-DOS, Windows ����) ���� �������� �� ���������. ����, �������� �� �������� � ������������ ������, ����� ���� ����� ����� ��� ������������ ����� � �� ��� ����� ���� ������, ��� ���� �������� (�����, �� ��������� ˳����). ���, ����, ��� ���������� ���������� �������� � ����, ���� � �������� ��� ������� ����������, �� �� ������������ � ����� ������. � ����� �������� ������� 'which'. ���� � ����� �������� (� ����� ����� �� � ��������, � � ����������� �����������) ��� � �������, �� �� �������� �� ������ ���� ������ �� ����������: dk@sophy $ which perl /usr/bin/perl dk@sophy $ � ����� ���������� ������ ������� �������� ������ �� ����� ������: 'dk@sophy $' � ��������� �����������, ��� �� ���� ������ ��������� �������� �������� � ���� ���� (������� ����) �������, �� ����, �� �� �������� �� ����� ������. ������ ����� � ����������� ������ ������� 'which', � � ��������� (�������) �� �������� 'perl'. ���� ���� �� ������������ � ����� ������, ��� ���� �������� 'which' �� ���� ���� ������, �� � ��������� �� ��� ��� ����� ������� �� ������ �������� ���� ������ �� ������ � ��������� �������: (1) dk@sophy $ which perl dk@sophy $ (2) dk@sophy $ which perl which: no perl in (/usr/local/qt/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:) dk@sophy $ (3) dk@sophy $ which perl perl: Command not found. dk@sophy $ � ������� ������ �������� 'which' �� ������� ������� 'perl' � ������� �� ������������ ����������� ��� ������ � ����, ������ ������� ������, �� �� ���� ���������. � �������� 2 � 3 'which' ������ ���� ��� ���������� ���� ������ ���� ���� �� ���� �����������. ��� � ��� ����� �������� ��� ����� ������ �������� ���� ��� ������ ����, �� �������� ���� �� ���� ���� ��������� � ��� ������ � ���� �������� ����������� �� ������ ���. ����� ������ �������� ����� �� ���� ������: � ������� "�� ���� ���� ���������" �� ����� �� �������� ���� ������������� "�� �����������". ���� ���� ���, �� �������� ����������� � ������, ��� �� ��������� �� �� 'which' �� ���� �� ��������. �� ���� ���� �������� ���� �������� ������, �������� ����� ���� � ���� ������������ �������� �� ��������. � ������� 2 �����, �� 'which' ���� �������� ������������ �������� � ������ ����������. ���� ���� ����������� � ��������, ��� �� ������� �� "���� ����" 'which', �� ��������, �� ���� �� ���� ��������. ��������� �������� ���� � ������ ������ ���� �������� ������, ��� ��, ���������, 'find', 'locate', 'rpm' (�� ������� �������� ���������� ��� ˳����� �����, ��� ��� ����� ������, ������� ������� � ��� ++ ����� ��� ˳�����, �� ��������� �� RedHat ������� ������ - ���� ��, ��� RedHat, Caldera, Mandrake, TurboLinux, ����). �������� ������ ����� � �������� �������� �������� � ������ ������ ��� ����������� �����������. ���� ���� � ������ �� �����������, �� ����� � ���� �������� ���� ������� - ���� ����� ����������. � � ���� ����� �������, �� � ������ � ���� �������������� �� ��, �� �� �������� � ���� ���� ������ ����� � �� ��������� � ����� ������� ����� ���������� �� ��������� �������������. ���� �������� �������, �� ��������� ������ � ���������� 'which' ���������� ������ � �������� ���. � ���� �� ����, �� �������� ������ ����� ���������� ��� ��� ����. �������� ����������� ��� ���� � ���� ����� ����. � ��������� ��� ������� �� ���� ����� - ����� 4 �� ����� 5. ����� � ��� ���������� �� ���� ����� ������ (����� 4.036, 5.003, 5.005_05 ����), ��� �� �� ������� �� �� ������ �������� ����� ++ ������� ������� �������� ������ � ������ �������� ����. ��� ������� ����� ����� ��������� �� ����� 4 �� 5 ���� ���������, ��� ���-���� ����� �����, �� ��� �������� �������. ��� ��������, ��� ����� ����� �����������, ���������� ���� ������� � ���������� �����: "perl -v". � ��� �� ��� ����� �����������: dk@sophy$ perl -v This is perl, version 5.005_02 built for i586-linux Copyright 1987-1998, Larry Wall Perl may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Perl 5.0 source kit. Complete documentation for Perl, including FAQ lists, should be found on this system using `man perl' or `perldoc perl'. If you have access to the Internet, point your browser at http://www.perl.com/, the Perl Home Page. dk@sophy$ ��������, �� � ������� ����� ����� ����������� ���� � ��������� ����� �����. �������� �����, �� ��������� �� ����������� �������� "-v", ���� �� ���������� ���������� ����� ��������, � ������ ����� �� ������ ����� ���� � ������ ������. ���� ����� ����������� ���������� �������� � ���� ��� �� ������� ���� ���������� ������ �����, �� ������� ����������, �����������, ����. �� �������� � �������� ���� ����� �������� ����� �����: � ��� ���, �� �� �� ������. �� �����! �� ���������� �����! META ������ �� ��� � ���������� ���������� �� ���� ������ ����� � ���������� �����: dk@sophy$ perl -e 'print "Hello! I have written my first program! \n"' Hello! I have written my first program! dk@sophy$ �������� ����� �� ���� ����� (�������� �� �������) � ����� �������. ���� ������, �� � �� �������. ��������� ������� � ���� ������ � ���������� ����� ��� ��������� ����� �� � ������� ������� ������ �� ���������� ��� � ����������� ��������. � ������ �������, ���� �������� ����-�� ������� � ����, ��� "��������" ����� ������� ���������� � ����� � �������� ��������, ��� ��������� ��������� �������� � ���������� ���� (����� ���� ��������� �������� � vi ��� emacs), � ���� ���������� ��� ����. ������� ���������� ����� �������� �� ����� �������� �� �������� ��������. �������� "-e" ����� �����, �� ���� ����� ��� ���� ������ ��������, � �� ����� �����, � ��� �������� ��������. ���, �������� � ��������� ������ ��� ����� ��������. � ������ ������� ��: print "Hello! I have written my first program! \n" �������� ����� ������� ��� ���� ��� ��������� ��������� ����� �� ��������� �������� (shell), � ��� �� ��������. ������ ��������� �������� ���� ���������� �������� ������� ����������� � �������, �� ���������� ��� �����. �� � ��� �������� ���������������� �������� �����. ������������ ����� ���������� ������ �� �������� shell'�, ��� �� �����. ����, ��� �������� �����, �� ���������� � ���� �������, ���������� �� ������������ �� �� ��������, � ��� �� �������� (����� sh, csh, tcsh, bash, ksh �� �� ��-������). �� ������ ����� ��������� ��������� ������ � ����� ���������. �������� ����� (������� � ������ �������) ���������� ��� �� ������ �����. � ��� ���������� �����, ���� ������� ������� �� ����� ������� 'print'. (��������, �� ������� 'print' ���� ������� ��������� - ������ ����� �� ������� �� �����? ) � ���� ����� �� �������� ����� ������: "\n". �� ����� ������ ���������������, ���� ����� ������� ����� �� ����� �����, ��� �� ������ �������� ����, ����� ����������: "�������� ������ ���� �����". ʳ���� ����� �� ������� ������ � ���� ���� �����, �� �� �������. �� ���� ���������� ��� �� ��� �������. ���� �� ����� ��������� � ����� ��������� ��������� �� ����, �� ���� ���� ����: dk@sophy$ perl -e 'print "Hello! \n I\n have wri\ntt\nen my first program! \n"' Hello! I have wri tt en my first program! dk@sophy$ ��������� ����� ����������� ����, ��� �������� ����������� ���� � ��������� � ���� ��� �� ���� ������ �������. �� ��� ����� - �� ������-�������� ��������� ��������. (��� ����� �����, �� � �����, �� ��� ���� ��� ����� ������� ����� ����'����? ���� ��, �� ������������ ��� �� �����, ���� �� �� ����.)
��� � ������ ���������� ��������... ���� ������? ��� ����� emacs,
� �� ����������. ���� ����� �������, �������� vi , ��� � �� ����
��������� ���, ��� ���������� ������� � ������ �������. ����� �� vi
��������� �� �����. ����, �� ����������� ��� ��� �������������,
�������� �� ���������� ����� �����. ���� ������ � ���� �� ��������
���� ������ �� �������� Microsoft Word'�. ����� �� ������������
emacs'� ���� ���������� � ������ ������������, �� ������� ������
������ �������� ������, ��� ��� ���������� ������, ��� ��� �����
�������� ���������� ��� � ����. ������������ vi ����� ������
����������� ������ ���� ������� ����-����� � emacs'����� �� �� � �� ������� ��������� �� emacs'�, �� ��������� ��� ��������� ����� ���� �����: dk@sophy$ emacs myperl.pl � �������� �� ���� �������������� ��������� ����� ����� ���� ����-��������. ��� ������ "myperl.pl" �� ������ �������, �� ����� ���� ������ �� ������. ��������� ����� �����, �� ���������� �� "pl" (��� �� ������ ������ - �� ���������� "pl" (*) ) �� ���� ���� �������� � emacs'� ����� �����.
(*) -
�� ��������� MSDOS'� ���, �� ��� ���� ������ � ���� �����
���������� �����������, ����� �������� � ��� � ������� - �� ����
������ ���� �� ����� ������ � ����� ����� - ���� � �� �����
���������). emacs �� ����������� ������ ��� �������� (**) �������� ��� �������������, � ���� ���� � ��� �������� ����. ��� � �� ���� �����������, �� ��� ����� ���������� � ������ �������� �����������. emacs'� ������ �������� ����� ���� �� ������ ��� �� ������������, ��� � �� ������ ������ �����. ������ (��� ���� �������������) ��� ����������� ����������� "pl", ���� ���� ���� emacs'�� ������ ��������� ��� ���� �� ������-�������� � �������� ����� ������ ������ ���� (��� � emacs ���� ���� �� ��������� ����� � �� �������� ����� ������� ������).
(**) -
ϳ������� � ����� ������� ������ ���� ������ ������ ��� �����������
�������, � �� ������ ��������� �������� ��������. ������, � ��� ���
�� ����������, emacs ��� ���� ��� ��������� ���� ���� �������������,
��, ��������� ��, �� �������� ���� ��, ����� ���������� ����
����������� ��������� ������ ���. ���� � ����� emacs'� ��������
�������� ������, �� �� ����� ����� ���������� ������ ���������
��������� ����. �������� ����� ���� � ������ emacs'� ����� ���: ��������� �� �������� Esc � ���� ����� ��������� `x' (��������� ����� x). ϳ��� ����� � ������ �������� ����� emacs'� ������ �'������� ����� `M-x'. �� ���������� emacs'� �� ����� �������. ���������� � ����� ����� `perl-mode' � ��������� Enter . ���, � ��������� ����� � ���� �� ������������ ���� �������, � ������� ������ emacs'�, �� ���� ��� ������� - ��� ����-����� ���������� ��� � ��. ������� ����, �� �� ���������, ���� ����� `(Perl)' , �������� � ����� ������� emacs'� (������ ����� ����� - ��������� �� ������� �� ������ � ���������� ������). ij������� �� ����� ����� �������� ����� �� ����������� No match ������������� � ���������� ����� emacs'�. ���� �� �������� �� ������� �����, ���� �� ���� � ������������� �������� � ����������, � ����� ���� ���-���� �� ������������ � ����� ������, ���������� �� ��������� �� ���������� �������������. ��� �� �������� �� ����������� �� ���-���� ������ ������������ ���������� ���� ��������. ���� �������� ���� ���������� � ������ ������� �����. ��� �������� ��� �������� ��� ����� � emacs'�: print "Hello! I have written my first program! \n" � �������� ����. ��� ����� �� �� ��� �������� �����, �� �� �� � ������ 'perl -e'. ��������� �������� ����� ����������� �� ������������ �������. � ����� ������� ��� �������� �������� ����������� ����� � ��������� �������� � ���������� � ���������� ����� �������: dk@sophy$ perl mytest.pl Hello! I have written my first program! dk@sophy$ �� ������ � ���������� ����� ���� �������� '-e' � �� ����� ���� �������, �� ��, �� ��� ���� ����� perl � ������ �����, ���� ����� ��������, �������������� ������������� ����. ��������� ������ ��������, �� ������, �� �������. ����� �� ��������� ����� �� ������ ����� ����-����������, �� �������� �� ����� �������, ���������� �� �� ������, ��� � �� ����� ������, �� ����� ��������� ����� (MSDOS ��� MPW � �������� ��� ��������). ��� �� ����� ������� ���������� � �� ������� � ������ ����������� ������. ��, ��� �� ������� ���, ������� � ����� � ����� � �����. �������� ��� ���������� ���� ����, �� ������� ���, ��� � Windows NT ��������, �������� �� ����, ����� ����-�� ��������� ���, �� �� �������� � �����. �� �, �� ����� ���� �� ������,� ���������� ����� �� ������. ���� �� ����� ���������� �������� ���, �� �� �� ��� ������ � ���������� �����? �����, ��� �� ������ ������. ������� �� �������� ��������� ���������� ���� ����� �������� (��� �� ������ "������") � ��� shell ��� awk, � ������� �� ��������� � ����. ���� �� ���� ������� �������, ��� �������� ��������������� ��� ��������� ����, �� ������ �������, �� ������� ���� �������� � ��������� ��������� �� � ���������� �����. ����� �������� � ���� ������ ������� ����������� "perl program", ������ � ��� sh ������ � ���������� �� "sh program". � ��, ���� � ���� �������� ������, ���� �� ���������� ������ �� "program"? �� ���� ������? �������� ��������� ����� ����� ��� ������. �������: dk@sophy$ ./mytest.pl ./mytest.pl: Permission denied. dk@sophy$ ���������� �����: ��-�-�, ��-�����, ���� ��� ������ � �����? � ��-����� �� ���� "Permission", � ���� ���� "denied"? �����:
�.�.:
�.:
����� ������� ���� ���� �������� ������ �� ��������� (executable). ���, ��� �� ����� ������ � MSDOS �� ���� ��������� Windows'���, ���, �� � ����������� ��� ���������� ����� (��, �� ��� � ����� ����� ���� ������) �������, �� ���� ������������ ��� ���� �� ��. ����������� ����� ����� � ������������ com, exe �� bat. � ��� ��������� ���������� ����� �� ������� ����������� ����� ����� (���� ���������� � ��������� ���� �����. ���, ��� �� ��� � �� �����������, �� ���� "�������� ����" ����� ������� �� �� �� ���� ���� �� ����� ���� ����� ������ � ����� ��� ����������� ���� �����). ��� ������� ���������� ����, �� �������� (����� �������� �� ����� ��������� - �������� ��-���������), ���� ������� ���� ��� APPL. � ����� � ��� ����������� ��������� (eng. permissions) �� ����. ��� ������� �������� ����, �� ��������, �� ������� ���� ����� �� ���������. � �� ������ �����, � ����� ��� ������� �����������. �� ���� �������� � ��������� ������� �� ������ � ������ ������������, ������� �����, �� ������� ��� ������������ �������� ��� ��������� ������� ���� ����: chmod +x mytest.pl ����� �����������: ������� ������� ������� ������ ����, ����� �������������� �������, chmod �������� �� "change mode", � +x ������, �� ����� ������ ������� �� ��������� �� ����� �����. ϳ��� ��������� ���� �������, ���������� ��� ������ ���� ��������� ����-����. ������� ����� ���������� ������������ ������� � ��������� �� ������������ ����������� �� ��� ���� �����. �� ��������� ����������� ������� "man chmod".
����������� �����: dk@sophy$ chmod +x mytest.pl dk@sophy$ ./mytest.pl ./mytest.pl: print: command not found dk@sophy$ �.�.: "��? �� ���?" �.: ��� -- ������� �����: ���� ����, ��� ����� ����, �� ���� ����� ��������, �� ���� ����� �������, �� ���� ���������� ���� ��������. � ����� � ��� ����� ����, ���� ������� ������ �� "magic number", ��� ������ �����. (����� ��-� ����, �� � ������ ����� - ���� �� ������ ��������, �� ���� ��������� ���������� ���������� ��� ��������, �� ����� � ������� "����-�����"). �� ������ ����� - ��� ������ ����� (�� ������ �����) �����. ���������� ��� ��� ������ ����� ����� ������ ���� ������� �� ����� ���� �������� ��� ����. ��� ������ ����� ����-����� ������� (����-�� ������ � ����, sh, csh �� �� ���� �������� -- ��������� ����� ������ ����������� ������ �� gnuplot -- ������ ��� ���������� ���������� �������� �����) ������� ���� "#!" (��� �����, ��������). ��������� ��� ��� ������� �����, ������� ����� ������������ �� ����� ��������, ��� ���������, ���� ������������� �� ���������������. �� ����: �� �������� ��������, �� �� sh, csh, ..sh � ����������������, ���� ����� � ���������������, ������ ����� ������ ����. ���� ����� ������� ���������� ��������������� (�� ���� �������������� �����������? � ������, ��� ������?!). �����, ������ ����, ��� ������ �� ������ ����� � ���������� ��� �����, �� ������� �������� ��������� ��������, ���� ���� ����� ���� ����, ������� ���� ����, � ��� ���� ������. �� ������ ������ �������� ������ ������� � ����. ��� � ������� ����� ����� ������� ���� ��������, ���� ��������������� ������� ������������� �������. ��� ����� � ���� ����� ����������, �� ����� �������� � ����� ������� �����? ��� ���� � ��� ����� ������� ��� ������� which. ���'�����, �� ��� ���� (� �������� ������):
�: "Which perl?" ���� ���� �����, ����� �� ������� ������ ����� �������� � ������� ����� ��������. ϳ��� ����� ���� �������� ������� �� �����, ������ ������ ����� � ��� ��� ���: #!/usr/bin/perl print "Hello! I have written my first program! \n" �� ���������, ���� ��������� ������ �������� ������ �����, ��� � ��������� ������� � ��������� ������� ����� �� ����-��������������? � ����� � ������������, �� ���� �� ������� ����� ������ ��������������, �� ����� �����, �� ��� ������ ��������� ��� ���������� �������� �������� - ��� /bin/sh � ������ ������� �� ������, �� /bin/sh �������������� �������� ������� print , ��� ���� � ��� sh , � �������� ���� ������� ��� ��. ���� � � ������� �� �������������� �������� ������� (���, ���������, ���� �� �� �������� ��������� ��������, ��� ��� ����� ������. � �� �������� ������� �����, � ���� ���� ��� ������������ � ����� ������ ����), �� ����������� ��� ������� ���� ����� �����. ��� �� ���� ����������, ������� �������� �����. ��� ������� ������� ����������, �� ���� �������� ��������� ������ ���, �� ��� ����� ��������: dk@sophy$ ./mytest.pl Hello! I have written my first program! dk@sophy$ ���... �����! ����� ������ ������ �����, ��� ��� � ����� ���� �������� ���� ����� ����. ��������� ����: #!/USR/BIN/PERL �� ����: ��� ���, ��� �� �� ���� �� ������, �������, �� �� ����� ����� � ����� ��������� ����� � ��� �����. � ���� #!/USR/BIN/PERL �� ����� �� ��, �� #!/usr/bin/perl, � ����� �� ��, �� #!/Usr/bin/perl.) �������� ��-� ���� �������, �� � ����� ���. �... � ��������� �� ����, � ��� �������� �� � ����� ������ ����������� �� ������ �������� ���� ������: csh: dk@sophy$ ./mytest.pl ./mytest.pl: Command not found. dk@sophy$ bash: dk@sophy $ ./mytest.pl bash: ./mytest.pl: No such file or directory dk@sophy $ sh: sh$ ./mytest.pl sh: ./mytest.pl: No such file or directory sh$ ����� PATH���� �������� ������� ���, ���������, �� ls, echo, startx �� ���� ����� ���������� ��� ������ ������ �� �����, �� ����� ����� ������ �����? � ����, ���� � �������� � ��ѳ, � �� �������� BATCH-���� "MYFILE.BAT" � ������ ����������� � ���������� ����� "MYFILE" � ���� ���������? ���� �� �� ��������� � �������? ����, ���� ���� ����������� ���� ���, ����� � ���� ����� �����, � ��� ��������, � ��� � ����� �, ���� � ������� ����� ������ ����� ������ �� ���� �������? ��� �� ���� "mytest.pl", ���� � �� ���� �������� "mytest"? ���� � �� ���� �������� "mytest.pl"? ���� � ����'������ ��� ������ "./mytest.pl"? �� ����������� �� �� �������, �� ������� �� ������ ������, �� � ����� ���������, � ����� ��� ������� �������� ����. ����� ������� (��� �� �����) ����� ������� ��� ���� ��, �� ����� ���������� PATH , ��� � ������ �������� ���������, � ���� ������� ���� ����� ������ ��� ���������. ��� ������������ ���� ����� ������ ����������� � ���� ��������. ��-����� , ��� �� � ���� ����������� ��� � �����? ���� � ��ѳ ���������� ����� ������� � ���������� �����, ������� ������ ������ �� �������. ������������ ������ ����:
�� ����� ��������� �� ���� ������� ���� ��������� �����. �����, ���� ���������� ����� ����� ������� ��� ����������, �� ����� "*.COM" ������ �������� ����� ������� "*.EXE", ����. ������� ����� �� ���������� ������ (�� ����� �'�����) ������������ �����, �� ������ ���� ����������, ��, ��������-�, ����� ������ ��������� ����� ����� �����, ����� � �����������. � ����� ������������ ������ �������� * �� ����� ����� ������:
(*) - - ���� ����� ������, ��� ���-���� �������, �� ��� �� ��������� ����� �������, ���� ���������� ������� ������� ��� ��������. ���� ���������� ����� � ���������� ����� /bin/ls , �� ������� ������ �� ����, ���� ������ ���� � ������ �� �������. �����, ���� ���������� ������� �������� ������� �� �������, �� ��������� ./mytest.pl , ������� �� ��������� ������ ������ ���������� �� ���������. � ����� ���� � �������� mytest.pl , ����� ��� ������� ����� ������ ��� ���� � ��� ����������, �� ������� � PATH . �� ������ ������� ������� � ������� � ����� ��������. �� ����� ������� ���, ��� ������� ���-���� ������ ���� � ����� ��������? �����. ��� ����� ����� ������ ������ (".") � ������� ������ - ����� � PATH . ��� ��� �� ������� �... ��-����� : ���� ����� �� ����� ������? ��� �������. ���� �� ���. ������� �����, �� �������� ������ ��������� �� ��������. �� �� ��� ������ � ��� ������ ��������� ������, �� ����� - �����, � ��� �������� ���������� �������������� �������. ���� ������ � ������ PATH ��������� (� ����������� ���������) ���� ����������. ������� ����� ������� �� ������� ������ �������� �� ������������� � ����, ���� � �������� ������ �� ������������� ����� ����� ��� ����-���� ��������, � ������� �� ��������� ����, �� ������� ���, ��� ���� �������� ������������ � ��� ��� �� ����� ���� ������� ���� ��������� ����� ��������� � ���������� �����. ������ ��� ������ �� �����.
���� �� ��� - � �� ��������, �� �������� �������� � ������ PATH . ��������� ��� ����� � ��������� �������� �������: dk@sophy$ echo $PATH /usr/local/qt/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin dk@sophy$ ����� ��������� ���������� ���� �� ���� �����������. ���� �� ���� ����� �� ����� � ���� �� ��������� ������� �������� echo, �� ������ ������ ��������� ��� ���� � �� ���������. ���� � �� �������� ���������� ��� ������, �� ���������� ������ � ������������ PATH . ������� ��� ����� ��������� � ��������� �� ����, ���� shell'�� �� �����������. ����, ����� ����� �������. ��� ����������� ������� ��������� /tmp/bin � ������ �� �� ����� PATH . csh �� ���� ������� ( tcsh ): setenv PATH $PATH:/tmp/bin sh �� ���� ������� ( ksh , bash , ash ): PATH=$PATH:/tmp/bin export PATH � bash �� ksh �������� ����� ���� �������� ������: export PATH=$PATH:/tmp/bin ֳ ���� ��������� � ��������� ��� (���� ����, �� �� ������� � ������� � ������� � �� ����). ����, ��� ������� �� ��������� ��������� �� ������� ����� ������ �� ������ � ��������������� ����� ������ shell'�. ��� csh (tcsh) �� ���� ���� .login ��� .cshrc � �������� ��������. ��� sh (ksh, zsh, bash, ash) �� - ���� .profile. bash ����� �� ����� ����� �����, �� ���������� ���������� �����������. ֳ ����� - [[.bashrc, .bash_login, .bash_profile]]. ��� �������� �� ����� ���� ������� ����� �������� � man bash . � �� ��������� ����� ������ ��� ���� �� ���� ���������� �� �� ������ ������� �� ������ ³������. ����, ������ ��� ����� ������ � �������, ��� ���-���� �������� ���������� ����� � �������� ��������? �� ���� ��, ��� �� ������ �� ������ ����������������� ������� (���� ���� �� ����������: DOS, Window NT, 3.1, 95, 98, 2000, 3000 ... 15000 - �� ��� ���� ������ �� ������ (!) ) � ���������� ���� �� �����. ���� ��� ������ �� ���� ���� �������� - �� �� "." � PATH, �� �� ����, �� MS Word'� �� ����������� ��, �� �� �����������, � �� �� �� ����? ϳ������ �������� ����� ����� ��� ��������� ������� ��������� � ���� ����� ������� ���������. ���� ���� � ����� ����� ���� ���� ������ ��� ������������� � ����. ����� ���������� (�� ������� ����� ���� ������� ������), ��� �������� ������ �� ����-����� ������� � �����, �� ����� ������� ���������� � ����. ��� �������� ����� ��������� ������� ������� ���������� ��������� �������. �� � �� ��������� ������ ��������, �� �� �����������? � ��� ��� �� ������ ����, ��� ��� ���� ������ �� �������, �� � �� ���� ������� � ��, �� �� �������� ��� ������� ��� �� �� ���� �������������. ��� ����� � ������ ��������� �����-�� ����������.
� ����� ����� � ������� ����� ����� ������ �� ������������� � ����. �� ��� ����� �� ������ ���������� ������� ��� ��, �� �������� ���� �������� ������� ������������. �� ������ �������� ����� ����� � �� ��, �� �� �������� � ������� ����� ����� " #!/usr... ". ���� ����������� ������ ������� ��� �� � "Command not found", �� ��� ������ ������� ����� �� ��� �������� ���������� ���������� �����. ����� �� ��������������� ��������, �� � ���������� �������� �� ���� ����������� � �����, ��� ������ �������. ����, ��� ����, ��� ������������� ������, �� ���������� ���� ������� � ���������� ����, ������� �������� ���� �������, �� ���������� ��� ������. � ���� ��������������� ������� "�����", ��� � ����� ������, ��� �������. ������ ���� ����, �� ���� ������� ������� (��� ���������� "����������"), ��� � ����� ������ ������� ������������ ���������. ����� ���� ������� ������������ ������� � ����� ";". � ����, ���� ���������� � �����, ��� ������ ���������, �������� � ������� �����: { ... ... ������_����_��������; ... �����_����_��������; ... ��_����_����_��������; ... }; ������� �������� � �� �� ����, �� ����, ���� ���������� � ������ ���������, �� � ���������� � �� ���� ������ ������ ������ �� ����� ��������� "��������" �� "����", � ������ ������ ������ ��������� ����������, ��� ��������� �������, ���� ���� ������ ������. ��� � ����� �������� �� ������ ���� ������������� ��������. ����� ��� ��, �� _�����_ ���� ������� ������������ ������� � ����� �, ������-��, �������. ���� �� ���� ���, �� ���� �������� � ������� ������ �� ��������� �. ³����� ���� �������, �� "����� ������� ��������� ���� �� ������ ������� � �����". � ����� �������, �� �������� �������� � ������� �� ����'������ �� ���� ������ � ����� � ����. �� � ��������� � ���������� ��������� � �����. ��� ��������� �� �� ���� ������� ��������. ����������������� �� ���� ������������� ����� � ��� �� �� ���� ����� ���������. ���������� ��������� ������ ��������, �� ���� ��������� �� ������������� �� ��������� ����� �����. �������������� �������� ����� ��� �������� ����������, �� ����� ���� ������ ��� ���. ����� ������������� �������� ������ ����� ��������. � ���� ��� ��������� ��������������� ���� "#". ��� �� ��� ���� ����� ������� �� ������ ���� ����� ��������� ���������� � ���������� ������. �������� �� ��� ������� �� ������ ���������� ���� ����� �������� � ������ ������: #!/usr/bin/perl # This script will print short message on the screen # and exit after this. # ������� �������� �����������, �� �� ����� ������ ����-���� ����� print "Hello!"; # ��������� ������ ����� ������� ����� ��, �� � ������������ print " I have written my first program! \n" � ��������� ���� �� ��������: dk@sophy$ ./mytest.pl Hello! I have written my first program! dk@sophy$ ����� �� ���� ����� � ������ ���� ������������� �������� �������. ���� � ��� ����� ����� ������� ��������. ��������� - �� ���� �����, ��� �� � ����� (�������� ��� �������������� ���� ��� � �� ��������� � ������ ������ ��������). �����, �� ��������� ���� � �� �. ���� ���� �� �� ��������. � ����� ����� ������ �� ����� ������ � ��� ������ ���������� � ��� ���� ����. ��������� ��� ������������� ����� ������� ��� ���� �����. ����, ��� ������������� ������ ������, ����� �����������, �� ����� ���� �������� �� �����. �����, ���� �� ������ ��������� ������ �������, �� �������� ����� ������� ���� ������ ����. ���� ��� ������� ��������� ���������� ������, �� ����� ������ ���� ��� ������� ��� �����. � ���������� �������, �� ����������� � ����� �������� ��������������� ���� ����� ����. (�����, �� ����� ����� �� ���������: "�� ����, ���� �� �'��� �������� ������ 2 ��������?" � ����� ����� ������� ���� ������ �� ���������� �� ���������� ������ ������ �����. � ������ ����� �� ���� ������� ����������� ����, ��� ���������������. � ����� ����������� ���� �� �������, ��� ��� ����������� ���������� �� ���� ������, ����. � �������� ����� ������������� ����, ��� ��������� ������ ����� ����, �� ����� ����������� � ����� ���. ���������, ��������-� � ����� ���� ������� �����, ����� ������ ���� ����� 5 � ���������� ��� 0,78. ��� ��� ���� �������� (��������� � ������) ������� �������� 5 ����������� �� ������ ����� � ���������� ��� 5,0. �������� ����� ��� ����� �� ���������, ��� ��������� ��� �����. � ���� ���� �������� ��� ������ ������� ������ ����������� �������, ��� ����� ������������ ���������� ����������� 䳿. г��� ���� ������������� ����������� ���� �� ���� ����� ���� �������� ������������ �����. ���� � ��� ��������� ������ ����'�������� ������ ������������ ���� �����. ����� �� ����� ������ �������� "5 + 0,78", � ����'������ ����� �������� ���� ������ �� "(������� �����, ������� �������� ����� ������� 5) + 0,78". ���� ���� ��������, � ������ ��������, �� �� ���� �� ������ ������, � ������� ���� ������������, ������������ �� ������� ����������� �����. ���� � ����� ��������� ���������. ���� ����� � �������� ����� ("��������") ��� ������������ � ���� ����. � ����-������ ��������� ��� ����� � ����, ���� ������� �� ��������� ����: ��� �����, ������ �����, ������� �� �����. � �� ��������� ������������ ��������� ������ ������, �������� ��� ���������� � ��������� ���� � ��������� �� ���������, � ����� �� ������������ �����������. ��� ���������� ���� ����� ���� �� ����� ������ ������� �� ����������� ������, ��� �� ���� ����� ���. �� �� ��� ���� ����� ����������� ���� �� ������ ����������. ��������� ��� ����� � ���� ����������� ��������� "$". ����, ��������� �������� $a= 5 ��� $b= 'one' , �� �� ����������, ���� �������, �� ������ �� ������ ���������� �������� �� �������, � ��������� ������. ������, ���� � ������� �������, ����� � ������� ����� ��������� �������, �� $a � ��������� ������, �� � ������� ������� ������ ������� ������� �� �����. ��������� �������� �� �������� �������� (��� ����� ����������� � ���� ����� �������� �������� ���������� � ���������� �����): perl -e '$a=5; $b="one"; print $a + $b, "\n"' 5 perl -e '$a=5; $b="one"; print $a . $b, "\n"' 5one � ������� ������� ����� $a ����������, �� ������� ����� (�� ���������� �������� ���������) � ����� $b, �� � ��������, ���� ���� ������� ������� �������. � ������� ������� ���������� �������� ��� ����� ���������� ������� * . ���� ����� ����� ����������� � ����� �������, �� ������� ����� � �� ������ ��������� �����.
(*) -
��������, ��� ����������� ������� "." ����� �� ������� �����.
����������� ���� 䳿 � ����� �����, ���� ������� ������� � �������
������ ����� ������. ���������� ����� �������� ��'������� ���� �����
���������� "concatenation". �� ����� ������� �������, � ���� ��������
�� ������������� (�� ���� ����������� �� ���� ������� ����� - � ��
������� ������� ���� ��������). ������ ����� ����� ��� ��������, ���� � ����� ������� ������� ���� � �� � ����� ���������� �� ������, � � ����� ������� - �� ������ . � ���������� ������� ����� $a � ������ ������� ������� �� �������� �����, � � ������ �� �������. perl -e '$a=5; $b="one"; $c=3; print $a . $b, "\n", $a + $c ,"\n"'; 5one 8 ��� �� ����, ����� ���� ������, ������, � ����� �� ���������� ������������ ���� ��������� ������ �������� �����. �����, �������� �� �'��� �������� �������� �� ����� ��������, � ���� ��������� ���������� � ���������� ��������: perl -e '$a=5; $b=15; $c=3; $d =$a . $b; print $d, "\n", $d + $c ,"\n"'; 515 518 ������������ ������ ������ ������� ������� � ������� ����� �� ��, �� ������� ������������ ����� - ��������. ������� ����� ���������� �� ����� �������. ���� �� ��� - ����� ������ ��������������� �����? �� �� ������� ������ �������� ��-������ ����: print Hello! I have written my first program! \n �������� �����, ��� ��� ������ ����������, �� ��������� �� �� ����. ��� ����, �� ������ �����, �� �������� � ���� ����� ����, ��� ���� ������� ������� ������� ������ � �������. �����, ������ � ����� � ������ ����� � ����-�������. ��, � ��� ��������, �� ���� ������ ������. ��� �� ���� � ����� ������ ������ �����: � ���������� (''), �� � ��������� ("") ? ��������� ���� ����������: $a=" ������ ������ "; $b=" �� ���� ������ "; print $a . $b, "\n"; print "$a $b ","\n"; print '$a $b ',"\n"; ./mytest.pl ������ ������ �� ���� ������ ������ ������ �� ���� ������ $a $b �� ����������? ������ ������ ���������: ������ �������������� �� ������� ����� � ��������� ����� ��'������� ���������. ������ ����� ������ �� ������, ��� � ����� � ������ �������, ��� ����� ������ ������ ������� �� ���� ����������. ������� � �������� �������, �� � ��� ���������� �������. ��� ����� � �������� ����� ��������� ���, �� ���� ��������, �����, �� �������� �� ��, �� ��������� ����� �������� ���� ����, �� �� �������� ������ �������� ����� - $a $b . ��� �������� ��������� ����� ���������� �� �� �����, � �� ������ �����, ���� ��������� ���������. ������������� ����� "�� ������" ����, �� ����������� ��������� ��������� �����. � ������� ������ (������� �����) ���, �� ������ ��������� �����, � ������� ��� ����� - ������� ����� "������". � ���� ��������� ������ ������ �� ��������, ��� �� �� ������ ���� �������� �������� ������. �� ��������� �� ����� ��������� print , ��� � ���� ��� ���� �������� � ����. �������� � �������� ������ ������ ������������: $a=" ������ ������ "; $b=" �� ���� ������ "; $c = "$a ���� $b"; $d = '$a ���� $b'; print $c, "\n"; print $d, "\n"; ./mytest.pl ������ ������ ���� �� ���� ������ $a ���� $b ���, ��� �� ������ � �������� �������, ������ ����� "���������" - quoting. � ������, ��� �� ���� ����� �� ��, �� � ����� ������������ ������. �� � �� ���� ������� ���������, ��� ���� ��� �������� ������ � ��������� �� ���������� �������? �, �� ����. ���� ������� ��������� �� ���������� ���� ������ ������, ����� ��� ��������� �������� ���� (��� backslash) - "\". ��������� ������� ��������� �� �������: $a=" ������ ������ "; $b=" �� ���� ������ "; print "$a ���� $b"; print "$a ���� \$b"; ./mytest.pl ������ ������ ���� �� ���� ������ ������ ������ ���� $b ��� �������� � ����������� �������� ���� �������� ���� ���������, ��� � ����������� ������. ��������� ��������� ����� ���� ������������. � ���������� ������� �������� ���� "�����" �������� �����, � ����� �� ���� ���� �������.
perl -e "print '\'" �� �������� ���� �������� ��������� ��� ���� ��������� ����� (��, �� �� ������, ������ � ���� ���� ��� ��������) ���� �� �� ������ ��������� ����� �� ����������� ������ �������. META * ������ * ����������� ������ - hash ������ � ������� �� �������� �����-������������� ������ � ������� �������� � ����� ������, ��� ������ ������ �������� ��� ����, ��� ��������� ���� �� ����� ��� ��� �������� ����� ���� �� �������� ���� �� ��� ���������. � ���� (�������� � ��� ��������, �� ���������� ��������� ����� -- ����� �� Macintosh -- �� ���������� ����������� �����, ��� �� STDIN , STDOUT , STDERR -- ����� �� Windows) ������� ������ � ������� ������ � ��� ��� ��������, �� ��������� ��������� ������, ������������ ������ �� ��� �� ���� ������������, �������� ��������� ������ (pipe) �� ����-��������, ����. ���� �� �� ���� ����������� � ��������, ��� ��� ��� ����� ���������, �� �������� � ��� ����� ��� ����������, � ��� ���, �� �� �������� � ��������� � ��� ������, ���������� �������� � ������ �� ������. ���� ����������������� �������� �����-������ �� ��������� � ����������� � ������� �������� ��������� - ������� � STDIN �� ������ �� STDOUT .��� �� �� ���� - STDIN ? �� � ���������� �� ����������� "standard input" � ������ "����������� ���". ����� ��� ��������, �� "standard output" ��� STDOUT - �� ����������� ����, � "standard error" - �� STDERR , ���� �� ����������� �������� ���� ����������� ����������� ����������, � ���������� �� "����������� ������� ��� ����������� �������". �������� ������ ������ � ���� ���������� � ������� ��� �������� ������ ������� ������� � �����, ������� ��������� �������� �������, ��������� � "������������ ����", ����� ������ ���� � STDIN , ���������� ���������� �� ������ �� STDOOUT �� ���������� ��� ������� � ����� �� STDERR . ������� ������� "����" ��������������� � ����� ���� �����, �� ���������� ��� ��� ����������� ���, ���� �� ������� ��� ����������� �������, �� ��� �������� �����. � � ���� ��� �� �� ��� ���� ���� ����������� �� ��������� ����� (����� ����� �� �����). ³�������� � ����� ���� ���������� � ����� ��, �� �� �� ��� � �������� � ������������� �����. �� STDIN ����� ����� ������, � STDOUT �� STDERR ����� ����� ������. ����, ��� ������� �� �������� ������������� � ������������� ����� ��� ��� ������, ������� �������� ���������� � ���� �� ������� ���������. ���������� ���� ������ ������� cat (1) . ����� ����-� ������� �� �������, �� ����, ��� ���������� ���� ��� ����� ����� �� ������ �������. � �� ���� ���� �� ������ ��. ���, ���������, ������� cat myfile.txt myfile2.txt ����� �� ������� ������ ��������������. ���� ������ ������� ����� � ������� myfile.txt �� myfile2.txt �� ������ ���� �� �����. ��� ���� ������ �� ������� �� ����: cat myfile.txt myfile2.txt > myfiles.txt �� ��� �������� ���� ������. ������ ����, ��� ��������� ����� �� ������, �� ������� ��� ��� ����� � ������ �� ������ � ����� ���� �� ������ myfiles.txt . ���� ������ ����� �� ����, ������� ���� ��������, � ���� �� ����, �� ������� ���� �����.
( N.B. ) - ������ ��� ��������� ���� �������� �������, �� ������ �������� ���� � ��������� �������: ���� ����� ������� ��������� � csh ��� tcsh cat myfile.txt myfile2.txt > myfiles.txt myfiles.txt: File exists ��� ���� �� �������� � bash '� cat myfile.txt myfile2.txt > myfiles.txt bash: myfiles.txt: cannot overwrite existing file �� ������, �� �� ������� ���������� �������� cat ��� �������� ����. ��� ����� ����� `noclobber' ����������� � ����� ��������� ��������. ������� ��� �������� ����� �������� ���� ��������: ������ - �������� �� ���� � ����� ��������� �������� ( .profile , .login , .bashrc �� .cshrc ) �������������� �� ����� � ������� �� ��������� (��������� �� ����� ������: set noclobber ��� set -o noclobber ), ��� ������ - ����������� ����� ��������� �������: cat myfile.txt myfile2.txt >| myfiles.txt
���� ��� � �����������, �� ���������� ������� cat , �� ����, �� ���������� ����� �� ������, ��� ���� ���� ������ ����� ������� ���� ��� �� ��� �� ����. ��� � ����� ������� ������ �� ��������. ���� �������� ������ � ����� �����������. ���� ����� ����������� ������� ���� ����: "������� cat ��������� �����, �� ���������� � ���������� ����� � ���������� �� �� ����������� ����." ������ � ������� ������� ����������� ������� ��� ������� �������, � � ������� - ���� �� �����. ����������� ������� ��� ������ � ������� ����'�����, ���� �� ������� ������. � ���� �������, ���� �������� �������, �� ������� ���� ����� ���� ���������� � ���� (����� ">file" , �������� �������� �������� �� ���� ������� �� ���������� ������ ����� �� ����������� � ����� ����� �� �������. ³������: ������� ����� � ���� ��������� �� ���� �������, � �������� �������� ( shell ). ����, ������� �������� �� ������� ������. ��� ����� ���� ��� ���'�����, �� �� ������� �������� �� �� ������, � �� STDOUT . ���� �� ������� ���������� ��� ����� ���������� � STDIN �� STDOUT �����. ���������� ��� ������� ���� �������, �� bc(1) . ������������ �� bc ������� ����, �� ���� ������������ � �������� ��������. ���� �� ������ �� ����� �� ������������� ���� ��������, ��������� ����������� ������� � ������ ������������� ���. ���� �� ������ � ���������� ����� ��������� bc , �� ����������� � ������������� ����� ������ ������������. ��� �� ������ ���������� ����������� 䳿 ������� ������� � ��������� ��� (�����!) ������ �������. �� ������ �������� 䳿 �� ��������, ������� Return � ���� ���������. ���, ���������, �� � ��� �� ����� ������: $ bc bc 1.05 Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 2+2 4 5/2 2 quit $ � ������ ����� 2 � 2 ( 2+2 Return ), � ���� ������� 5 �� 2 ( 5/2 Return ). � ������ �������� (���������� ���������������) ����� ������������ ������� ������� ���� �� STDIN (���� � ����� ������� � ��������� ����'�����) � ������ ���������� ������ �� STDOUT (�� �� ��� ����� � ���������� ������, ��� � ����� ����'�����). ��� ����� �� �� ��� �������, ���� ��� ���� ��� ������ - � ��� �������� ������������, ����� � ����� �� ��� �������, ������� ��������� �� ������ � ���� ����� � ������ ��������� � ���������� �������� ������� ����, �� ���� �������. ͳ! � ����� ���� �������� ���� ������. ���� ����, ������, ����� ��������� IP-������, �������� � ��������� ���� � �������������� �� �������, � ������� ���, �� ������ ������, ���� ���� ���������� ��� ������ ��������. �� ��������� ������� � ���� ��� ��'����� ����� ����, ��� �� ���������� ��� ����� �� ��������� ������������ � ������, ��� � � ���� ���� ������� ������, ���� � ����� ����������� ���������� ����, ���� ���� ������� ���� ������� ���� ���� ������������. ���� ����� ��� - ������ �� ���� ����-������ ����������� ���������� ���������� IP � ���������������... ���, �� �������� ������ (����-�� �� ����, � ��������� ���), ���� �� ��������� ����� �� ������ ������� �������� � ����? ��� �����, �� �� ��� ������ ��������, ����� ��������� ����������������� STDIN �� STDOUT ����-����. �����, ����� �� � �������, �� �� ������� �� ��������, ������ �� STDIN ������� bc . ������� �� ����� ������ ����� ��������, ��� ������ �������� � ����. �� �������� ������ - ��������� - ����. ���������� �����������: $ echo "2+2" | bc 4 ������! ����� ����� ����-� � ����� ������ bc �������... ������� ����: $ echo "obase=16; 127" | bc 7F ������� obase � bc ���������� ������� ������� ��������, ����� �� � ����� ������ ����������� ���� ���������� ���������. ������� �����������, �� ibase � ������ ������� ������� ������ ������� ��������. � ���� ��������� ������� ���������� ����� �� ������� ������� � �������: $ echo "obase=8; ibase=2; 11110100010101000101" | bc 3642505 ��� �� ��� ������ ����� �� ����, ��� �������� ��� ���������� ������. ��� ���� ���� ����� ������: #!/bin/sh echo "obase=16; $1" | bc ��� � ���? ���, ���... � ������ �� ���: $ ./h2d 20 14 $ ./h2d 100 64 $ ./h2d 15 F $ ./h2d 225 E1 ����� ����� ��������� ��� ���� � ������ ��� �� ������� ��� ����� �� STDOUT ������������� �� �������������� �� ����? ���� ������. �������� print ����� ����� ���, �� ���� �������, �� �� ������, � �� STDOUT , ��� ��� ������� ���� ������� ������. ���� � �������, ���� ������� ������, �� � ������ ���������� ���. ����� ����� ��������� print ( man perlfunc ) �� ��������� ������: print FILEHANDLE LIST � ����� ���������� LIST � ��� ������� �����, �� �� ����������� ��������. �� ����� ������� �� �� ������� FILEHANDLE � �� �����, �� �� ����. �� ��������� ���, �� ������ ���������� FILEHANDLE �� ���� �������� ����� ������������ ����, ��� ���'��� ����, � ���� ������� �������� ���� � ���� ������. ��������, FILEHANDLE - �� �� ����� ����� (��� ����, ��, ���������, STDOUT - ��� �� � ������ �����)! �� - ������ ��� ������ ������, ���� ��'��� ���� �� ��������� �����, ���� ��� "����� �� �����" (���� ��� ����� ���������� � ��������� "filehandle"). ����� ������� FILEHANDLE , ���� ����� ���� � ������ ����������� ���� ������ ��: print "/home/user/MyFile.txt" "Hello" ������� ����� ��� ����, �� � ��������� ������ � ����� �������������. �������� �������� ��������� ������� � ���������, ��� �� ����������. ����, ��� � ���� ����� ���� ����������� ����-��, ���� ����� �������. ϳ��� ��������� ������ � ����, ���� ����� �������. ���� �� ������� �������� � ������'������ - ���� ��������� �������, �� ������ ����� ����������� ������������. � ����� ���� ���������� �������� �������� ����� - �� ������ ��������, ��� ��'��� ����� ����� �� ��������� FILEHANDLE'��. �����, ���� ����� ���� ������� ��������� ����, ��� ������ � �����, �� ���� � ��� �� ����� �� �������� ������ ��� ��, �� ����� ������� STDOUT ���� �� ��������� ���������� ��� ����� � ����� ���������� ��������? �����������, �� � �� ���� ����, ����� STDIN �� STDOUT ����������� �� ��������� �����. ³���� ����������� � ����, �� STDOUT �� ����� ��������� ����� ������� � ����� - �� ����������� �������� ��� ����� ����-����� ����������� �������. ��� ���� ��������� � STDIN - �� ����� ����������� ����������� ��� ����� �������������� �����. ���� �� �� ������ ��� ����-���� ������ ��� ������ �������� print "Hello" � �� �������� ����������. ��� ����������� ����� � ���, �� ����� ���������, � �� �� �����, �� ����� �� ������ ��� ������ ��� ��, �� ���� ��������� �����. ������ ����� �� ������ ��������� ��������� ������������ ��� �����, �� ��������� �� ������� - ����� STDIN �� STDOUT . ������������ STDIN �� STDOUT��� STDOUT ��� �������� ����. ���� �� �� �� ������ ������ ������ ������ ������ �� ����, �� ��� �����. ���� ������� ��������� ����������� STDIN . �� ������� ������� ������������ ����� �����, ���� ��� ���������� �������� ��� ��� ����� ������? ��������� ����� ������ �� ����������� �� ���� - ����������� ������ ������������ STDIN � ���� ������. ����, ������� ����� �, � �� ����� ��������������, � ����� � ������� ������� � �� �������������� ��� ������������ ����� ���� �� ����� ���������� �������� ����� ��������� � ��������� �������. ���� �� � ������ ��� �������� ���������� ���, �� ���� STDIN , STDOUT �� STDERR ��� �������� ������? ���� ���, ���� ��� ������� ��������, ���� �� ������ ����, �� �� ��������� ��������� �� �������� cat - ���������� STDOUT �� ������� � �������� ���� � ����. ��� ���� ��� ������� ���������� STDOUT � �������� ���� �� STDIN ���� ������� (���� ��� ��� pipe ��� ��� ������ � �����), ��, ��������� � ������ �������: ls | wc -l �� ��� ������, ���� �� ������ ����������� ����� ������� ������ ���������� ��������, �������� � ����? ��� �� �������� ��������� �������� `` (�������� ���������). ��������� ��������� ���� �������: `<���� ������� ������>` �������� ������ ���� �����, �������� �� ����� ���������� ����������� � ��������� �������� /bin/sh ��� �������� �� �� � ������� ���� STDOUT ����� �� �����. ��, ������� ��� ������ ���������� �����, ��� ������ �� ���������� ��� STDERR , � ���� - ��� �������� ������ ������ STDERR , ���� ���� �� ����� ������ ���� ����� � STDERR � ����� ������, �� �� ��� ���� �������� ����� 䳳 ��� �����. ��� �� ����������, �� ���� ������� ��� ����� ������. � ����-�� ���������� � ���, �� ��� ��������������� ���� �� �������. ������, � ����� ���� ������������ ����� �� ����� �������� ���� �� ��� �� ����, �� ��������������� �������� ``. ����������� ������ - ��� ������� �� ��, �� ���� ������� ��� ��������. �����, �� ���� ���� ���, ���� �� �� 100% �������� � ����, �� �������� ���������� ��� ������� � ��� ����� �� ������, �� ���� ������ ��� ��������.
( ������������! ) -
����� �������� �� �������� �� ����! ����-��� ������� ���� ����������
�� ���, �� ��� �� ���� �������, ��������, ���� ��� ������ ��
��������� ����-���� ������ ��� � � �����, �� �� ��� ��� �� ������
������, �� ���� �� �������� � �� ���������� �� ������ �� ���
��������� �������. ��� ��, ���-����, ����������, �� ���� ������... # touch myprog.log # -rw-r--r-- 1 root root 0 Jan 6 18:55 myprog.log # perl -e "`mv /var/log/myprog.log /var/log/myprog.log.0`" # -rw-r--r-- 1 root root 0 Jan 6 18:55 myprog.log.0 ��� ����������� shell-����� ��������� ���������� ������������ ``. (���� ��� ������ ������������, ������ � �� ����� ���� � ������������� ������, ��� �� ������ �� ��� ��������). ���������� �������� � ����� ������� ������ ����� ����� ����� �� ��������� ������� mv (1) . ��������� ������ ������ �� ��� 䳿, ��� �� ���������� ����� ������������ ( log ) �����. ������ ������� ��� ����� ������� ��-�����, ��� ��������������� ���� ����� ��������� � ��� �������� �������. #!/usr/bin/perl `mv /var/log/myprog.log.3 /var/log/myprog.log.4`; `mv /var/log/myprog.log.2 /var/log/myprog.log.3`; `mv /var/log/myprog.log.1 /var/log/myprog.log.2`; `mv /var/log/myprog.log.0 /var/log/myprog.log.1`; `mv /var/log/myprog.log /var/log/myprog.log.0`; ���������� ����� ���� ������� ������: #!/usr/bin/perl while (<>) { print } �� �� ������? �� ����� ������... ����� ����� ������ ��������� � ����� ����������� ���� ������������. ��� ���� �� ��� �������� ���������� � ���, �� ���� STDIN Meta:
��������� ��������������� ������ � ������������ �� ���� ������� ��������� �� ����-������ ���������� ������� � ������������� �� ���������� ������� �����? ͳ���� ��������� � ��� �������� ����. ������ �������� � ������� ���� ������ � ���������. �������� ����������� ������ �� � ����, �� � ���� "������������������" ��������� ����� ���� � � � ��� �� �����, � ������ �������� ��, �� �������. ͳ���� ���������! ������? ���, �� ���� �� ���������� ����� ����������� � ����� 156 ����? ϳ� ����� ���� ��������� �� ��� ��������, �� ����� ��� ����� ���������. ���� ��� ���� ������ � ���� �������� ������� ���������. ������� � ���������� ����� emacs � ��������� ������������ ����� � �����, � ��� ����� 2 ������� ������ ������� ������������ ��� � ���� ������. ���������, ���� �� �������� �� � �������� ����������. ������� � ��� �������� ������� ���� �������������, � ��� ����� ��������� ������ ������� ��� �� ���������. ������ ����: �� ����� ������ � ����� ������� ���� �������� �� �����������, � ���� �������� �� �������� - � "ѳ����", � "ѳ�.", � ����� "ѳ�". ������� �������� �� "ѳ�" �� "ѳ����" � "ѳ����" ���� ���� �������� ������������� � ��� �� "ѳ�������". �� ����? ��� �������� �� ���� ��������� ������. � ������ ������� ������� ������� �� "ѳ����" �� ������� ����� "ѳ�", � ����� ���� "�" ��� ��� ������� " ", ��� ������ ".", � ���������� ������� ���� ���� "�" ��� "�". ��� � � ������ ����������� ������. (�� ����, ���� �������� ����������� ������. ������� ����� ��������� ������ �������� ���������, ��� ��.) ���, ��� ��� ��� �������� � ��������� ������ (����-�� �� �� � ��ѳ, �� � �����), ��������� ������ ������. ϳ��������� ������ (*) �� ����� ��������� (?) � ������� ����������� ���������� ������. � ��������� �������� ������ (��������� � ����-��� � ���) ������ ������ "����-��� ������������ ����-���� �������", � ���� ��������� ������ ���� ����-���� ������. ����, ���� ���, ���������, ������� �������� ����� ��� �����, �� ����������� �� "l", �� ������ ���� ������ �����������: ls l* ��� ���� ��������� � �������� �����. ��� ��������, �� ����� ����������� �� "z": ls *z (� ������ �������� ������� �� ����� �� �������: �������� ������� � ��ѳ �� ������. � ��ѳ ������ ������ �������� "����-��� ������������ ���� �� ����� ���� �� ���� �����"). ���, ���������� ����� �� ����������� ���������� ������ � ����. ����� (���� �����) ��������� ������������ �� ������ �� ����� ��������� � ��������� ��������, � ���� � ��� � ������ ��� ���������� "����-����� ������ �������" �� "����-��� ����������� �������". ��� � ���� �� �������� ������ - ����-���� ������ ����������� ������� ".", � ���� ������ ��������� ���-�� ������ "�������". � ������������ ������� ����� ��������� � ��� ���� ������, �� � � ��������� ��������, � ��� ���� ������ �� � ���� - "����-��� �������". �����, ������� � ����� ������ ������, �� ".*" ������� ����-��� ������������ ����-���� ����. ����, ��� ��� ��� ������� ����������� �� ������������� ����������� �������� � ����. ������ ���� ���� ������������ ��� ���, ���, ������, ��� �������� �� ���: ��-�����, �� �������� �������� �� ������� ��� �� ����� �����, ���� ��������� ���������� ������� � ����� (�������� �� ��������: "�������!", ���� ��������� �� ����� �����) �, ��-�����, ��������� �����, �� ������� ������� ���� �� ���� ����, �� ��� ����� �� �������. ��������� ������ ���� ��������� ���� ����� ������������ ���������� ������: #!/usr/bin/perl #### A. $a = "anyky "; if ($a =~ m/a.*/) { print $a; } #### B. $b = "benyky "; if ($b =~ m/a.*/) { print $b; } #### C. $c ="iily varenyky "; if ($c =~ m/a.*/) { print $c; } � ��������� ���� ��������� �����: dk@sophy $ ./mytest.pl anyky iily varenyky dk@sophy $ ������� �������� ���������� � �����쳺� ����� ����. ������� - ��, �� �����, ������� � ���������. ������� � �� �������� �������� ���� �� ���������� ������ � ������� � ����� ���� ������, � ������� ������. ��� ����������� ������ ���������� ���� � ����� ������, � ���� ���, �� ��� �� �������: if ($a =~ m/a.*/) { print $a; } META �������� ����� ��������, ���� ����� ��� �������� ����� ��� ������ ��������� ���, ��� �������� � ��������������, ���������� �������� �������� ����� if (...) {...} , ��� � ���� ������ ��� ������������. ���� ��������� ���������: if ����� � ����� ������� ����� - �������� �� ��������� ��������� ���� �����. �� ����� ������ ����� �������� ���������, � � ����� �� ������� ���� ���������, ��, ����, ��� ���������� ����� ��, ������� �������� �������� ����� ����� - �� ����� �� �� ���������� ������, �� ����� �� ������� ����������. � ������ ������� �� ����������� ����������� ������ �������� ���������. �� ����� �� ����� ������: if ( <�����> ) { <����> } ���� ����� �������� � ������� ������ �����������, �� ��� ���������� ���� ���������, ��������� � �������� ������ ���� �����. ����, ���� ���������� � �������� ������ ���� ����� ����� ��������� ���� �������� ���������. ������ ��������� ����� � ������������� �� ��������������� �������� ��� ���������� ������� � ������� ������. ���� �������� �� � ��������� "������", �� ���������� "<����>" ( � ������ ������� �������� 'print'). ���� � � ��������� ������ �� ��������, �� � 'print' �� ����������. ��������, ��� ����������� ��� ���������� �������, � ���� ����� ���������� � ����� ������. ֳ ������� ��� (���������� ������� A.): ��� ������� - "$a", ������� ������� - "=~", ����� ������� - "m/a.*/". ������� ������� � ����� ����� � ����������, ���� �'���� ��������� �����, �������� � ��� ������� � ��������� ��� ���������� �������, �������� � ����� �������. ���� ����� ������� ������ � � ����� � ��� ���������� ������, ��� �� �� ����� ��������. ��� ��� ���������� ����� � ����� �������� ���� ������ (�����) �������. � ������ ����������� ������� ���������� ������� � "a.*". � ������ ��� �����: "����� a, ���� ��� ��� ����-��� ������� ����-���� ����". �������� ��� ���������� ������� ����������� ������ "m" �� ����� "������-�������", � �� ��������� ���������� �����. �����: "<��������>/<����������-�����>/". ˳���� "m" ������� �������� ������ (��� ���������) � ����������� �����. �������� �� ����� �� ����� "match". ����, ��������� ����� ����� ��������� ��������� ������ ������ (���� ����� ������ �� ��������� "~=") �� ���������� �������, ���� ����� �������� �� ���������. ���� �������� �����������, �� ���� ������� (������� �����): "Match!" � ��������� �������� ��������� ��, �� ��� � �������� ������. ���� ���������� ��� "match" �������� ����������, �� �������� ����� �����: "�������!". ���� ��� "�������" ������ ��� ��������� "������". ����������� �� ����� ��������� ���������� � ��������� ��: "�� �� ��������� ��! ����� ����!". � ���� "����� ����", �������� 'print' �� ����������. ���������� �������� �� ��������� ��������� ������� � ����������� ��������, �������, �� ���������� ��� ����� ����� �������, � ����: ���� A. �� ���� C. �� ����� $a �� $c ����� � ��� ����� "a". � ������ $b �� ����, ���� � �������� print �� ����������� � ����� �����. ���� ��������� � ������� ���������� ����������� ������ ������ ����� ���������� ����� ������������ �� �����������. ���� � ��� �� ���������� ����� � ���� ������� �������� �������� ������ ��������� (����� ��������� � ��� �������� �� ������������). ������ ���� ������������ ��������� �� ��������� ��������� �������� � ����, ������ - �������, ��� ��������� ������ �� ��������� �� ����, �� �������� � ���� ��������� ���������. � ����� ������� �� �������� ��������� � ��� �������� ������, ���� ���������������� � ������������ ������� (�������� � ����������� ������ ���, ��� �� ���-���� ����������� ���������). �������� m//���� ����������� ������� �����, �� ���� �����, � ���� ����� ������� �������� ������ - �����. ��� ����� ������ ������� � ����: m/a.*/ �� /a.*/ . � ���� ��� ������ �������, �� ��������, �� ����� ��������� ������ � ���� ������, �� ��������� �� ������ � ���� � ����������, ������ ��� �����, ���� ��������. � �� � �������� ����, �� � ������� ������� �� ������ ������ " " � �� �������� "m ". � ����������� ����� ��� ������ �������������� �� ��� ����: #!/usr/bin/perl $a = "anyky "; if ($a =~ /a.*/) { print $a; } $b = "benyky "; if ($b =~ /a.*/) { print $b; } $c ="iily varenyky "; if ($c =~ /a.*/) { print $c; } �������? ���. ��� �� ��������. ����� ���... �����, �� �������� ���������� ����������� ���� �� ���� ������ ������������� ������������ "�������", � �� �������� ���������� ����� - "//". ���������, ���� �� ������ ����� � ����� ����� �� ������ ���������. ��� ����, ��� ��������� �� ��� �� ��������� ������ ������� ���� ������. ��� ���� ����� "���������" ������� ������, ���� ���, �� ���������� ����� �������������� �� ���� ����, �� ��������� ���������. � � ����� �������� ���� � �������� ���� ���� �� ����� ��� ����������� �����. ����� ������ � ... ��������� ���� ��. ��� ����� � ���� �������, ���� ��������������� ����� m// (����� m ����� ������� ����'������). ������ ��� // ���� ���� ����-���� �� ��������-�������� � �� �������� ������. �� �������� ������ ������ ���������: if ($a =~ m/a.*/) { print $a; } if ($a =~ m:a.*:) { print $a; } if ($a =~ m~a.*~) { print $a; } ��� ����� ������ �� ���� ������ ������ ����� � ������ ������, � ����� ���������������� ������� �����: if ($a =~ m{a.*}) { print $a; } ���������� ����� $_� ���������� ������� �� ��������� ��������� � ���� ������ �������� ��������� ����������� ������. ��� � ���� �������� �������� �� ��������� ����� ����� ������� �� ���� ���������� ����������� ��� ����� �����, ��� � ������� ���������� ��� ����, ��� ��������� ���� �������� ��� ���������� ������ � ����������� ��������. �� ����� � ���� ����������, �� $_ � ��������� ��������� �����. ֳ� ������ ����� ����������� ����-�� ��������, ��� ����, �� ����-��� ����� "����������" ������. ���, � �������� ��������, ���� ����� $_ ��������������� � ���������, �� �� ����� �� ��������� ������ (�����, ������� ������ �� ����� �� ��������) �, ��� ����, ��� ���� �������� ���� ���������� ��� ����. � ���� ��� ��������, ��� ���������� ������� ������ ����� ��������� �����: #!/usr/bin/perl $_ = "anyky "; if (/a.*/) { print } $_ ="benyky "; if (/a.*/) { print } $_="iily varenyky "; if (/a.*/) { print } ���������� ������ � ����� ������� ��� �������� �����: $_ = "anyky "; if (/a.*/) { print } � ������� ����� ������ $_ ������������ ����� ��������. � ��� ��� ��������, � ������ ��� ����. ����� ��������� � ������ ������. � �������� ������ ����� ������ 'print'. ���� ��� ��������: "Print - ��?". � ������ - ��? �������� print, ������ �� ��� ���� ���������, �� � �������� ��������� �����. � ����: ���� �� �� ��������� ���� �������� �����, ��� ����� �� ������� ��������� (��������� - � ������� � print), �� ����� ���������� ����� $_. ��� ���� ��������� � ��� �������� ������ - ���� � ������� ������ �������� ��� ����� ���������� ����� � �� ������� �������� �����, ��� ���������� ����� ����������� �� ����������� ������ $_. ���� �������� ��, �� �������� � ����� if (/a.*/) { print } � ���������� �� � ���� ���� �� ���� ������� �� ����� ����: "���� ���������� �������� ����� $_ ������ � ��� ����� a ���� ��� ��� ����-��, �� ����� �� ���������� ����� �����������". "������������" ��������� �������� ������, ���� ��� ������� ������� ������� ������� �����, � ���� �� ����������� ��� �� ����� ���������� �����? �� ������� ��� ����� ������ ������ ���������� �����, �� ���� ������������� ����� ������ �������� ��������� if ? �� �� ��-������? ����� ������������� ����-���� � �������� ������. ��� ���������� ��� ����� �������� ���� ���� ����� ���������. ������ =~ ������� ������������� ���������� !~ , � ������� ������ ������� ��� ����� ��������� �� ����� �����������: ����, �� ��� � �� �������� ��������� ���������� ����� ���, ���� �� ���������� �� ��� ���������� �������. �����: #!/usr/bin/perl $a = "anyky "; if ($a !~ /a.*/) { print $a; } $b = "benyky "; if ($b !~ /a.*/) { print $b; } $c ="iily varenyky "; if ($c !~ /a.*/) { print $c; } �� ����� ���������: ./mytest.pl benyky ���� ������ ��������� ������� ����� ��������� if ����� ����� �������� �������� ��������� �� ����������. �����, ����� �� ���������� ������ ���� �������� �� ����������: #!/usr/bin/perl $_ = "anyky "; if (!/a.*/) { print } $_ ="benyky "; if (!/a.*/) { print } $_="iily varenyky "; if (!/a.*/) { print } � ������ - �� ���� ����� �������� ���������. �������� ���� ����� - ���� - �� ����� ����, ��� � ����� ������ �� ���� ����� �������� ���������. � ���� �������� unless � ��������� �� ��������� if . �����, if (!<�����>) {<��>} � �������� �� unless (<�����>) {<��>} , � � ����������� ����� �� ��������� ���������� ������ ����� ���������� � ������: #!/usr/bin/perl $_ = "anyky "; unless (/a.*/) { print } $_ ="benyky "; unless (/a.*/) { print } $_="iily varenyky "; unless (/a.*/) { print } ��������� ������������� ���������� ��������-�, ���� ����, �� �� ��� ����� ������������� � �� ������ ����������� ��������, � �� ������� �� ��������������, ������ ��� ��� ������ ������� ���� � ������, ����������� �� ���� ������ � ��������� ������������� � �������������� ������ � �����������. ��� �, ��������, �� ��� ����� ���������� ��������� ��� ���� ������ �� ������. ҳ���� � ���� ��, �����-�� �����-��, ������ ���-��, � �����... �� �����, ���� ���! ���, ���� �������� ���������� � ����������� �������� ��� ���� �� ������� ����������. ������ ������ ������� ��� ���������, ����� ����������� ��������, ����. ���, ������! ����������� ������� �� ����� ����� �� ���������� ����, �� � ����. ����� -�� ������, � ����� - �� ������. �������� � �� ��������� ���� ������� �. �������� ^ - ������ ������� �����, ���� ����� �� ������� ����������� ������. ���� ������������ �� ���������� ������. $ - ������ ����� ����� (�������� �, ������� �� ������������ �������, ����� ���� ����� � ���� ����������� ������). �� ������, ����� ����������� ��������. ������� 1. $_="anyky"; if (/^a.*/) { print } $_ ="benyky "; if (/^a.*/) { print } $_=" varenyky"; if (/^a.*/) { print } �� � ���������: ./mytest.pl anyky ��������, �� ����� � ������� ����� a ����� �� ������� �����. ������� 2. � � ������ ������ $_="anyky"; if (/.*y$/) { print } $_ ="benyky "; if (/.*y$/) { print } $_=" varenyky"; if (/.*y$/) { print } �� �������� ����: ./mytest.pl anyky varenyky (�������� ����� �� �������, �� ��� � ���� ������� ������, � ����� ��������, ���� �� ����������� ������ �����.) ������� 3. ���� ��'������ ������� ����� �� ����� �����, �� �������� ����: $_="anyky"; if (/^a.*y$/) { print } $_ ="benyky "; if (/^a.*y$/) { print } $_=" varenyky"; if (/^a.*y$/) { print } ./mytest.pl anyky ������� 4. �� ������ ������ �����? ���� ������! ������ ����� ���������� � ������� � ����, � ������ ����������: $_=""; if (/^$/) { print "������ �����!" } ./mytest.pl ������ �����! � ��������� ������ �� �����: ������ ���������� ������� �������, �� ���������� ��� ���������? $_="�����"; if (/^.*$/) { print "����� �� ������!" } $_=""; if (/^.*$/) { print "����� �� ������!" } �������� ���������� ������ � ��� ���������� � ��������, �� ���� ���� ���� ������������.
���������� ��� �������� �� ����������������� ������ � ���� ����� ����� ������� �������, �� ����� ���� ���������� �����������. �� ��� ������ � ������� � ���, �� ������, ������, ������ ����� ( ^ ) �� ���� ������ ( $ ). � �� ���� ���������� ������� ��� ���, ��� �� �� ���� ������. �� ����������� ����� ������ ���������� ������ �������, �� ���� ����������� � ���� ������ ������ - ���� ��������� ��� ����. ���, ��, ���������, ����� a , � ����� if (^a) ������ ���� �� - ����� a . �����, �������� ��������-�������� ������� � ���������� ������� ����� �� ����� ������� ���������� �������� � ����� ������� ���� ����: ����-���� ������ �� - ������ ��� ��� ������. ����������� ����������� ������� ��� ��� ����� � ���������� ������� ��� ��������. ���� �������, ���� ����� �������� �����, � ���� �� �� ���� ����� ����������� �� ���� ��� (�� � if (/a/) ), ��� ��� ���� ( �� � if (/aa/) ), � ����� (������� ������ ���, �����, � ������� �������) ������� ����. �� ����� ������� �� ������������� ������ ������������� (���������) ���� ����� ���� �������� ������� ������� ���� � �����. �� ���� ��������� �� ������ �� ������ " .* ". ����������� � ���� �������� - ����� ������ �����, � ���� ����� "��" ���������� 5 (�� �����, � �� �����) ����, ��� ���� ������� � �������, � ���� ����� �� ��� ���� ����� (����� � �� ����� ���� ��� ������, ���� ���� ��������� ������ �������� �� ����, �� ����� ����� ������ ����, � ������ �� ... ��, ������ �� ���� ���������). ���� � ����� �������� ������� ��������� �� "��������" -- ��������� ����� �� ����. �� �������� ������ ����������, ���� ������� �������� (��-��������� ������ "match") ������ ������, ���� ����������� ����� ������� ����. � �� �� ������ ���������� ���: <������><�������> �� � ����� �������� ���������� ��� ���� (� ��������� ����������� N � M - �� ��� �����): "*" - ��� ����� ��� ������, ��� ��������� ������ "����-��� ������� ����" (��������� ����); + - ���� ������ �� ������� �� ������ *, ��� ���� ������ ������ "����-��� ������� ����", �� + ������ "����, ��� ����� ����"; {N} - ������ "N ����". {N,M} - ������ "�� N �� M ����". {N,} - ������ "N ��� ����� ����". {,M} - ������ "�� �����, ��� M ����". N.B. ��������, �� �� ������� ���� � ��� ������������ �������� ������ �� ���� ������� ���� ������ �� �� ���� ����� ����� ����� � ���������� �����, � �� �������� ������� ���� � �����. � �����-� �� ���������� �� ������ ��������: ������� 1 ����� /b+/ ���� ��������� ����� ��������� ���������:
, ��� �� ���� ��������� ������ ��
������� 2 ����� /b*/ ������� ��� ������� � ������������ ��������. ������� 3 /o{2}/ ������� ����� ������ ������� ������: "abooboo", � /b{2}/ ������� ����� "abba". ������� 4 ���������� ����� /a+/ � �������� ����� ���������� �������, �� /a{1,}/ �� /aa*/ . ����� ������� ������������ ����� �����: ���, �� ����� � ���������� ������, ������������ ������ �� ����. - �������� ����-���� ������ �� ���, �� ������� � ����� �������. �����, [ab] ������ "��� a , ��� b ". ������, ��� ������� �������� � ����� ���� �����, �� ���������, "�����" �� "�����" ������� ����-� �������� ����: if (/[��]�[��]��/) { print } (��� �������� �����, �� �� �� �������� ��������� ����� ��� �������, �� "�����" �� "�����". ������� 5 ���� ��� ������� �� ������ ���, ����������� ����� �, �� ���������� ��� �� 1998 ��� �� 1999 ����, �� ������ �������� ����: if (/199[89]/) { print } ������ ����������� �� ����� ������� � �������� ����������� ������� ��������� ���������� �����. ��� �� ������������ ���� ����� ������, ���� ��� ������ ������� ������� "����-��� �����", �� ������ ������ ��������, ���, �� �� ����� "³� � �� �" ��� ����� ���� � �������� �� ������ ������: "�-�". ����������� �� ���� ������: if (/a-z/) { print } �� ������ ������, �� ���� ������������ ����� �����, � ����� ����������� ����-��� ����� (�������� !) ��������� ������. �����: ������� 6 ������������� ���������� ����� ������� ����� ��������� ������:
� �� ���� ��������� ������� � ��������� �����:
��� ���� ��������� � ����: ����-��� ��������� �����, �� ������ �������� �� 3 �� 8 ���� ���� �������� �� [3-7] . � ���, ��������, � �������� ��������� ��������� �� ������������ ���� ������� : ������� ��������� ������ ����������� � ��������� ���� ������� ������. ������� 7 ���������� ����� /^ 199[7-9] [a-z]+/ ���������� �������� � �'��� "���������" ���������� ������:
�������� ����� �� ������ �������� ����� ����������� ������: +------------------------- | 1998 omega | 1999 alpha | 1997 beta | 1997 gamma $20 | 1998 sigma Proxima | 1999 s $40 | , � �������� - �� �������� �� �� ����������: +------------------------- |1999 omega |1998alpha |1997 Beta |1999 $100 | 1999 omega | �������� ������, �� ������� � ����� ��������:
������������ ���������� ���������� �������� ����� �� ���� ����� ���� ������������ ���������� ������, � ���� - ����������� �����, ���� ���������� ����� ����������. ���, ���� ����� ��������, �� ����� ���� ��������� ������� ����. ���� ����� ������� ���� �������� ���� 䳿 ���� ��� �� �������� �����, ��� ����������� ������� ����������� ������. � ����� ������� �� �������� ��������� �����. ������������ ������� ����� �� ��������� �� ������ ����������� ������ ������� ����� ���� �������, ��� ������������ ���� �������� ����������� ������. ��� ���� ������ ����� ������ ���������� ����-�� 䳿, ��������� ��� �������. ��� ����� ����� ����������� ������ � ������������ ����� �� ���� �������: ��� ���������� �����, �� ���� ��� ����� �� 1 �� 9 (���������, \1, \5), ��� ������ ������ �� ���� ��� ���������� ����� (�� ���������, $1, $5 ��� $29). ����� ���� ����� ($n ��� \n) ������ �� ������� �����, �� ���������� � ����������� ����������� ������, ���� ��������� � n-� ���� ������. ������� 1 ³������ ���������� ����� �� ������������ ��������� � ����� ���� ������. ����� ����� ����� ������ �� ���� ��� ��������: $a = " 1998 omega"; $a = " 1999 alpha"; $a = " 1997 beta" $a = " 1997 gamma $20" $a = " 1998 sigma Proxima"; $a = " 1999 s $40"; $a = " 1999 omega"; $a = " 1998alpha"; $a = " 1997 Beta"; $a = " 1999 $100"; $a = " 1999 omega"; �� ���� ��� ������ �� ��������� ����� ��������: if ($a =~ /^ (199[7-9]) ([a-z]+)/) { $year = $1; $item = $2; print "г�: ", $year," �����: ", $item, "\n"; } ��� ����������� ������ ����� ������� ���� ����� �����: г�: 1998 �����: omega г�: 1999 �����: alpha г�: 1997 �����: beta г�: 1997 �����: gamma г�: 1998 �����: sigma г�: 1999 �����: s ������� 2 ����� ������ ���������, ��� ���� ��� �� ��-������ ���������. ������� �������� �������� ������, ���� ���� ��������� � ��������� ������ � ����-����� �����. �����! �� ����� ����������� ������, � �� �� �� �� ������� ����� � ����� �������� ���� ³�����, ���, ����. "�����" ��� ��������������� � "��������" ����� - ˳���� ��� ������ �� �� ���������. � �����, ������� ���� ����� �����, �� �������, �� ��� �� ������ ����� �������� �������� �������. ��� �� �������� ����, �������������� ����� � ������, �� �� ��� ������� �� ����� �������. ���� � ����� ������ ���� "����" �����������. ��� ��� ���-� ���� �� ������� �� ������ ����� �����. �� ���� ���: ��� ������ ���� �����: #!/usr/bin/perl if (open (STDIN, "who|")) { while (<>) { if (/^([a-z][a-z0-9]*) /) { print $1, "\n" } } } else { die "�� ���� �������� ������ who !\n"; } ����� ���, �� ��� ������� �����, ��� ������ �� ����� ������ � ����� ������. � ����� ��� �� ����� ��������, ��������� ������� who . META ((( non greedy ������ � -- ? ))) META ((( ����� � $<�����> ))) * scope of $(digit) * difference \ \t tab (HT, TAB) \n newline (LF, NL) \r return (CR) \f form feed (FF) \a alarm (bell) (BEL) \e escape (think troff) (ESC) \033 octal char (think of a PDP-11) \x1B hex char \c[ control char \l lowercase next char (think vi) \u uppercase next char (think vi) \L lowercase till \E (think vi) \U uppercase till \E (think vi) \E end case modification (think vi) \Q quote (disable) pattern metacharacters till \E Natalya and Dmytro Kovalev ������ ��� �� �������: [email protected] ������� �������: http://www.asahi-net.or.jp/~as9d-kvlv ��� ѳ� 27 12:29:36 JST 2000 |
![]() |
|
||||
© 2000-2003, ���, ������� �������� -- ���� �� ����������, �������� ����������� -- ����� ������, ��i���� -- 08.06.2003 14:30:22 |