| ���������� | ����������� | �������� | ������
| ����� 1 | ����� 2 | ����� 3 | ����� 4 | ����� 5 | ����� 6 | ����� 7 | ����� 8 | ����� 9 | ����� 10
| ����� 11 | ����� 12 | ����� 13 | ����� 14 | ����� 15 | ����� 16 | ����� 17 | ����� 18 | ����� 19
| ���������� � | ���������� � | ���������� � | ���������� � |

����� 6

    � ���� �����:


������� �������� �����-������

���� �� STDIN

������ �� ������������ ����� (����� Perl-���������� ����� stdin) � ��������� ������. �� ��� ������ ��� � �������� <stdin>. �������� ��� �������� � ��������� ���������, �� �������� ��������� ������ �����* (� ���� ����� ������ ��� � �� �������� undef):

$� = <STDIN>; # ��������� ��������� ������

���������� � ��������� ��������� ���� ��� ���������� ������ � ���� ������, ������ ������� �������� ������������ ����� ���� ������, ���������� ����������� ������ ����� ������. ��������:

@� = <STDIN>;

��� �������, ��� ���������� ��������� ���������� ������ ������ ������ ���� ����� �� ����� � ����������� ����������� ��� ������ �� ��� �����-���� ��������. ��� ������ ������������ ����� ������� ���� ������:

while (defined($line_ = <STDIN>)) (

# ����� ���������� $line )

���� ���� ������������� ������, � ���������� ���������� �������� <stdin> ���������� ������������ ��������, � ���������� ����� ������������. ���� ����� ��� ������ � <stdin> ������ ���, ��� �������� ���������� �������� undef � ��������� ����.

* �� ������� ����� ������ ��� ����, ��� �� ��������� ���������� $/.

�������� ������ ���������� �������� �� <stdin> � $_ � ������������� ����� �������� � �������� ���������� ����� (��� � ���������� �������) ����������� �������� �����, ������� � Perl ������������� ��� ����� ������ ����������� ����������� ������. ���� � ��������� ��� �������� ����� ������ ������ �������� ������ �� ������������ ����� (����� ����� <...>), �� Perl ������������� �������� ������, ������� �����������, � ���������� $_.

while (<STDIN>) { # ��� "while(defined($_ = <STDIN>_) "

chomp; # ��� "chomp($_)" # ����� ����������� ������ �������� � $_ )

��������� ���������� $_ �� ��������� ������������ �� ������ ���������, ����� �������� �� ������ ����������� ��������� ����� ����������� ������.

���� �� �������� "����"

������ ������ ������ ������� ���������� ������� � ������������� �������� "����" (�). �� �������� ������ ��� ������ �� <stdin> � ���, ��� ���������� � ��������� ��������� ���� ������ (��� undef, ���� ��� ������ ���������), � � ��������� ��������� � ��� ���������� ������. � �������, ������, �� �������� <stdin> �������� "����" �������� ������ �� ����� ��� ������, �������� � ��������� ������ ��� ������ Perl-���������. �����, ��������, � ��� ���� ��������� kitty:

#!/usr/bin/peri while (<>) ( print $_;

i

� �� ��������� �� ���:

kitty filel file2 file3

�������� "����" ������ ������� ��� ������ ������� �����, ����� ��� ������ ������� �, �������, ��� ������ �������� �����. �������� undef ������������ ������ �����, ����� ����� ��������� ��� ������ ���� ������. ��� ������, ��������� kitty ������� ������ �� UNIX-������� cat � ���, ��� �������� ��� ������ ��������� ������ �� ������� �� ����������� �����. ����, ��� � cat, ����� ������ � ��������� ������ �� �������, �������� "����" ������������� ������ ������ �� ������������ �����.

� ���� ������ ���������� �������� "����" �� ������������� ��������� ��������� ������ ���������������, � �������� � �������� @argv. ��� ����������� ������, ���������������� ��������������� Perl � ������������ � ����������� ��������� ������. ������ �������� ��������� � ��������� ������� ����� �������. ���������������� ���� ������ ����� ��� ������*. ����� ���� ���������� ���� ������ � ����� ��������� � ��������� �������� "����" �������� � ���� ����� �������, � �� � ����������� ��������� ������, ��������:

@ARGV = ("aaa","bbb","ccc");

while (�) { # ���������� ����� aaa, bbb � ��� print "this line is: $_";

t

� ����� 10 �� ������, ��� ����� ��������� � ��������� ������������ ����� � ������������ �����. �������, �� ��� ������������ ���� ����� � ��������� ����� ���������� �� ������ ���� ����������.

����� � STDOUT

��� ������� �����-���� ������ �� ����������� ����� � Perl ������ ������� print � printf. ������� ���������, ��� ��� ��������.

������� print � ������� �����

�� ��� ������������ �������� print, ��������� ����� �� ����������� �����. ������� ����������� �� ���� ������� ��������� ���������.

������� print �������� ������ ����� � �������� �� �� ������� �� ����������� �����, �� �������� ������� ������������� ��� �������� ��������. ��������, �� ������ ��������, ��� print � ��� ������ �������, ������� ��������� ������ ���������� � ���������� ������������ �������� ������� ����� ������ �������. ������� �������,

$� = print("hello ", "world", "\n");

� ��� ��� ���� ������� ������ ����������� hello, world. ������������ �������� ������� print � "������" ��� "����", ��������� �������������� �� �������� � ��������� ����������. ��� ����� ������ ����������� �������, ���� ������ �� ��������� ������ �����-������, ������� � ��������������� ������ $� ������ ������ ����� 1.

������ � print ����� ������� ������� ������, ��� �������� � ������ �������, �������� ����� ������ �������, ������� �� ������ �������, ��� ���������� � ����� ������:

print (2+3),"hello"; # �������! ������� 5, ��������� "hello" print ((2+3),"hello"); # �����, ������� Shello print 2+3,"hello"; # ���� �����, ������� Shello

* ����������� ����������� Perl �������� ������ getopt-��������� ��������������� ������� ���������� ��������� ������ Perl-���������. ���������� �� ���� ���������� ���� � ����� Programming Perl � �� man-�������� perlmodlib(l).

������� printf � ��������������� �����

��������, �� �������� � ������� ������� �������������� ��������� ������, ��� ��� ��������� ������� print. ��������, �� �������� � ���������������� ������ �-������� printf. ������ ����������: � Perl ���� ����� ��������� �������� � ����� �� ������.

������� printf ��������� ������ ���������� (����������� � �������������� ������� ������, ��� � � ������ ������������� ������� print). ������ �������� � ������ ���������� ��������, �����������, ��� �������� ��������� ���������. ���� �� �� ������� �� ����������� �������� printf, ���������� � man-�������� printf(3) ��� perlfunc{\), ���� ��� � ��� ����, ��� � ����� 3 ����� Programming Perl.

������:

printf "%15s %5d %10.2f\n", $s, $n, $r;

��� ������� ������� $s � 15-���������� ����, ����� ������, ����� $� ��� ���������� ����� � 5-���������� ����, ����� ��� ���� ������, ����� $� ��� �������� � ��������� ������� � ����� ����������� ������� � 10-���������� ���� �, �������, ������ ����� ������.

����������

������ � ����������� ���� � ���������� �.

1. �������� ���������, ������� �������� ���������� ������� cat, �� �������� �� �������� ������� ���������� ���� ����� ���� ������, ��������� � ��������� ������, ��� ���� �����, ����������� �� ������������ �����, ���� ����� �� �������. (� ��������� �������� ���� �������� �������; ��� ���������� tac.)

2. �������� ��������� �� ����������� ���������� ����� �������, ����� � ������ �����, ��������� � ��������� ������, ������� ����� ��������� �� �������� �������������. (��-��, �� ������ ������� ���, ��������� ��� ����������, ������� �� ��� ��� �������, ���� �� ����������� � ������ ������������ ����� Perl, ������������ � ����� 1.)

3. �������� ���������, ������� ������ ������ ��������� �������� (������ �� ������� �������� ��������� ������) � ������� ��� ������ � 20-���������� ������� � ������������� ������. ��������, ��� ����� ����� hello � good-bye ��� ��������� � 20-���������� ������� � ������������� ������. (���������, ����� ���� ��������� ������������� ������������ 20-���������� �������, � �� 21-����������. ��� ������ ���������������� ������.)

4. �������� ��������� �� ����������� ���������� ����� �������, ����� ������������ ��� �������� ������ �������. ��������, ��� ����� ����� 20, hello � good-bye ��������� �� �� ����������, ��� � � ���������� ����������, � ���� 30, hello, good-bye ��������� ���������� hello � good-bye � 30-���������� �������.




|     �����     |     ������     |


| ���������� | ����������� | �������� | ������
| ����� 1 | ����� 2 | ����� 3 | ����� 4 | ����� 5 | ����� 6 | ����� 7 | ����� 8 | ����� 9 | ����� 10
| ����� 11 | ����� 12 | ����� 13 | ����� 14 | ����� 15 | ����� 16 | ����� 17 | ����� 18 | ����� 19
| ���������� � | ���������� � | ���������� � | ���������� � |