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

����� 11

    � ���� �����:


�������

��� ����� ������

������ ����� �������, Perl � ���, ��� �� ��� ��������, "������������ ���� ���������� � �������". ������ ����� ����� ������, ������ ��� �������� ������ �������.

� Perl ���������� ������� ������� ��� ��������� ������, ������� ���������� ��������. � ������� ������������ ���������� ����� (��������� ��������, �����, ������������ ����� � �.�.) � ���������� ����� (������� ������, ������� �� ���������� � ������). ��������� ������� ������ ���������� � ��������� ������ � ������� ���������������� ������ � ������ ��� ������ ��� ������ ������ print using � ��������� ����������� �������.

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

1. ����������� �������.

2. �������� ������, ���������� ������, � ���������� ����� ������� (����).

3. ����� �������.

���� ����� ������ ���� ����������� ���� ��� (� ������ ���������, ����� ������ ����������� �� ����� ����������)*, � ��� ��������� ����� � �����������.

* ������� ����� ��������� � �� ����� ����������, ��������� �������� eval (��. ����� Programming Perl) � man-�������� perlform(l).

����������� �������

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

format ���_������� =

������_�����

��������_����, ��������_���, ��������_���

������_�����

��������_����, ��������_���

������_�����

��������_����, ��������_���, ��������_���

������ ������ �������� ����������������� ����� format, �� ������� ������� ��� ������� � ���� ��������� (=). ��� ������� ���������� �� ���������� ������������ ���� � ������������ � ���� �� ���������, ��� � ��� ������ �����. ��������� ����� �������� � ���� ��������� ������� �� ������������ (����� ��� � ��������� ���������), �� �������� ������ ����� �����, ����������� � ������������������ �������. ��� �� ������� � ��������� �������, "����� �������", ����������� ���� �������� �����, ��������, ��������� � ������� ������������ ������ (���, �������, ������ �� �� ����������� ����������������� ������, � ��� ������).

�� ������ ������� ���� ��� ������, ������� ����� �������� ��������� ��������� ����� ��� ���� "������", �.�. �� ��������� �� ����� ������. ����� ������� ������������ ������, ������� �������� � ��������� ������*. � �������� ������ ���������� ������� ���������������� ��-�������; ��� ���� �� ��� �������� �������, ����� ��� ���������� �������� (������, ������ ����� ������ ��� ���� ���������) � �� ���������� ����� �������� ��� ������ Perl-���������.

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

Hello, my name is Fred Flintstone.

������ ����� ����� ��������� ������������� (fieldholder, ��� ���������� �����) ��� ����������� ������. ���� ������ �������� �������������, �� ��������� ������ ������� (������� ���������� ������� ��������) �������� ��� ��������� �������� � �� ������ �� ������ ������������� � ������� ����� ����������� � ��� ����. ��� ������ ������ ����� � ����� �������������� � ������ ��������:

Hello, my name is @����� $name

* � ��������� ������ ��������� ������ ������ ������������� �������� ����� ������.

������������� ����� � @�����. ���� ������������� ������ ��������� ����, ������� ������� �� 11 �������� � ������������� �� ������ ����. �������� ������������� ������� � ������� "��� � ��������������".

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

Hello, my name is @����� and I'm @� years old. $name, $age

������ ��� ������, �� �������� ������� ������ ��� ������ ������:

format ADDRESSLABEL =

$name

$ address | @<�������, @< @�� |

$city, $state, $zip

�������� ��������: ������, ��������� �� ������ ��������� (� ������ � ����� �������) ����� �� ��������, ������� ����� �������� ����� ��� ���. (���� ��������� ����� ����� ������ ������ ��������, ��� ����� ���������������� ��� ������ ����� � ������������ ����� ��� ������ �� ��������.)

���������� ������� � ������ �������� ������������. ��������� ������������ ��������� � ������ �������� �������������� ���������� �������, ����� ��������� ���������� �� �������������� � ���������� ������ (��������, � ������ ��� ������������� ������� ���������� $zip ���������� ����� ������� ��� ������� ����� ���������� ������), �� ��� �������� ������ ��� �������. Perl �� �������� �� ���������, � �� ��������� ���������� ��� ����� �� ������.

�����, ������� � ������ �������� ����� ������� ������� ����� ������, ������������� (�� ����������� ������� ������ � �������������� �������-��������, ������� ����� ���������� ����).

����������� ������� ������ �� ����������� ������������. ��� �� �������� ���������� ������������ ���� � ����� ������� ������������� � ����� ����� ����� ���������. �� ������������ ������� ����������� ������� ����� � ����� �����, ����� ������������� �����������.

����� �������

����� ������� ������������ � ������� ������� write. ��� ������� �������� ��� ����������� ����� � ���������� ��� ����� ����������� �����, ��������� ������� ��� ������� ����������� ������. �� ��������� ����� �������� �������� ������ � ��� �� ������, ��� � � ����������� ����� (���, ��� ����������� stdout ������������ ������ stdout). ����� �� �������, ��� ���� ������� ����� ��������.

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

format ADDRESSLABEL =

$name

$address

$city, $state, $zip

open(ADDRESSLABEL,">labels-to-print") || die "can't create";

open (ADDRESSES,"addresses") || die "cannot open addresses";

while (<ADDRESSES>) f

chomp; # ������� ������ ����� ������

($name,$address,$city,$state,$zip) = split (/:/);

# ��������� ���������� ����������

write (ADDRESSLABEL); # send the output }

����� �� ����� ��� �������� ����������� �������, �� ������ � ��� ���� � ����������� ���. ������� �� ��������� ���������� ��� ��������� �����, ������� ���������� labels-to-print. �������, ��� ��� ����������� ����� (addresslabel) ��������� � ������ �������. ��� �����. ����� �� ��������� ���������� ��� �����, ����������� ������ �������. ��������������, ��� ���� ������ ����� ��������� ������:

Stonehenge:4470 SW Hall Suite 107 :Beaverton:OR:97005 Fred Flintstone:3737 Hard Rock Lane:Bedrock:OZ:999bc

������� �������, ������ �������� ���� ����������� ����������� �����, ������� ���� ��������� ����������� ��������� ���� �������.

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

����� �������� �������� ���� ����������� ��� ������ � �������� ���������� ������� write �������� ������. �������, ��� ���������� ������� write �������� ���������� �����, � ������� ����� �������������� ������; ����� ����, �� ��������� ������������ ������ � ��� �� ������.

������ ���� � ������� ���������� ��������������� ��������� �� ��������� ������ �������. ����� ��������� ���� ����������� � ������� ������� ���� labels-to-print ����� ��������� ���������:

Stonehenge

4470 SW Hall Suite 107

Beaverton , OR 97005

Fred Flintstone 3737 Hard Rock Lane Bedrock , OZ 999bc

��� � ��������������

�� �������� �� ��� ������, ��� ������������� @�� ���������� ����������� �� ������ ���� ����, ������� �������� ���� ��������, � @����� � ����������� �� ������ ���� ����, ���������� ����������� ��������. ��� �� � �������, ������ ������������� ����� ��������.

��������� ����

����������� �������������� ���������� �� ����� @. �������, ������� ����� ����, ���������� ��� ����, � ����� ���� �������� (������� @) ������������� ������ ����.

���� ����� ����� @ ����� ����� ������� ������ (��), ���� ��������� �� ������ ����, �.�. � ������, ���� �������� �������� ������, ��� ���������� ��� ���� ����, ��� ����� ����������� ������ ��������� �������. (���� �������� ������� �������, ��� ������������� ���������; ��������� ������� ������ �����������.)

���� ����� ����� @ ����� ������ ������� ������ (��), ���� ��������� �� ������� ����, �.�. � ������, ���� �������� �������� ������, ��� ���������� ��� ���� ����, ��� ����� ����������� ��������� �����.

�������, ���� �������, ������� ����� ����� @, � ������������� ��������� ��� ������������ ����� (||||), �� ���� ������������. ��� ��������, ��� ���� �������� ������� ��������, ������������ ���������� ��������� � ����� ������, � ���������� �������� ����� ����������� �� ������ ����.

�������� ����

��������� ��� ������������� � �������� ���� � ������������� ���������� �������, �������� ��� ������� ���������� �������. ��� ���� ����� ���������� �� ����� @; �� ��� ������� ���� ��� ����� ������ # � �������������� ������ (��� ���������� ���������� �������). �����-����, ���� @ ��������� ����� �� �������� ����. ��������:

format MONEY =

Assets: @#W#.*� Liabilities: @#*�##.*# Net: @t�##*.*#

$assets, $liabilities, $assets-$liabilities

��� ��� �������� ���� ��������������� ����� ������ ����� �� ���������� ������� � ��� ������ (� ������� �� ����� � �������� � ������). �������� �������� �� ��, ��� � ������� ������������ ��������� � ��� ��������� ��������� � ����������� ����� �����.

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

format MONEY =

Assets: @���<� Liabilities: @���� Net: @��<��

&cool($assets,10), scool($liab,9), Scool($assets-$liab,10)

sub pretty (

my($n,$width) = @_;

$width - 2; # ����� ������������� �����

$n � sprintf("%.2f",$n); # sprintf ����������� � ����� �� ��������� ���� if ($n < 0) (

return sprintf ("[t$width.2f]", -$n); # ������������� �����

# ����������� � ���������� ������ ) else {

return sprintf (" %$width.2f ", $n); # ������������� ����� ����������

^ ��������� } }

## body of program:

$assets = 32125.12;

$liab = 45212.15;

write (MONEY) ;

�������������� ����

��� ��� ����������� ����, ��� ����������� ��������, ������������� � ������ ��������. Perl ������ ����������� ��������� ������, �������� � ���� ��������_������ ����� ������. �������������� ������������� ��������� ������������ ��������, ������� ������������ ����� ��������� ����� ����������. ��� ������������� ������������ ����������� @*, ������� �������� � ��������� ������. ��� ������, ��������� ������ ���������� ��������, ������������� � ��� ����. � ������ ������ ��� ����� ���� ���������, ������� ���� � ���������� ��������, ���������� ��������� �����. ������������� �������� ����� ��������� ��� ��, ��� �������� �����:

������ ������ �������� ���������� �������� �������� �������� ����������. ��������, ����������� ���� �������� ���������

format STDOUT = Text Before. @*

$long_string Text After.

$long_string = "Fred\nBarney\nBetty\nWilma\n";

write;

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

Text Before.

Fred

Barney

Betty

Wilma

Text After.

����������� ����

��������� ��� ������������� � ����������� ����. ���� ������������� ��������� ��������� ����� ��������� �����, ��������� �� ������ �������� ��������� �� �������� ����. ��� ����� ������������ ��������� ��������� �������, ������� �������� � ������������. �� ������� ���������� �� �� �����������.

��-������, ����������� ���� ������������ ����� ������ ������� @ � ��������� ������������� �� ������ (��������, /'<�). ��������������� �������� ��� ������������ ���� (� ��������� ������ �������) ������ ���� ��������� ����������*, ���������� �����, � �� ����������, ������� ���������� ��������� ��������. ��� ����������� ���, ��� ��� ���������� ����� ������������� Perl �������� �������� ����������, � �������� ��������� �������� ����� ������.

����� Perl ��������� ������ �������������, �� ����� �������� ���� ���������� � "�����������" �� ���� ������� ���� (������������ �������� ����������� ������� "�����")**, ������� ���������� � ���� ����. ��� ����� ���������� "����������" �� ����������; ����� ���������� ���� �������� ���������� ������������ ����� ��, ��� �������� ����� �������� ����. ������ �������� ������ ���, �� ����� �������.

* � ����� ��������� ��������� ��������� ������� ��� ����, ��������, $�[3] ��� $h{"fred").

** ����������� ���� �������� ���������� $:.

 

���� ��� ������ ������� ����� ����������� ����� � ������� ��������� ����� �� �����; �� ������� � ���� ����� ������� ����, ������� � ��� ��������� (�� ����������� ����, ��� �� ��������� ������� ���������� �����, � �� ������ �������� ����� �� ������ ����). �������� ������������� ������������ ���� �����������, ����� � ����� ������� �������� ��������� ������ �� ���� ����������. ��������� �� ���� ������:

format PEOPLE =

Name: @<������ Comment: "����������^���^ $name, $comment

$comment $comment $comment

�������� ��������: ���������� $ comment ���������� ������ ����. ������ ������ (������ � ����� �����) ������� ��� � ������ ��������� ���� �������� ���� ����������. � �������� ���������� ���� ������ $ comment ���������� ���, ��� ��� ����� ��������. ������ ������ ����� ��������� �� �� �� ���������� ($comment) � ������� �������� �� ��� ��������� ��������� ����. ��� ����������� � ��� �������, � ��� ��������� �����. �� ���� ����, �� ������� �������������, ������� ����� ����������� �������� ������� �� ���������� $ comment, ������������� � ������� �������.

��� �����, ���� ������ ����� �������� ������ ������� �����? ��������� ����-��� ������ ������. ���, �������, ���������, ���� �� ��������� �������� � ��� �����, ����� � ������ �������� ���� ���������� ���������� �����. ���� �� �� ��������� �����, ������� ��������� ������ ����� �������� � �������������� ������� ������.

����� ������ ��� ��������, ����� ������������ ������� ����������. ������, ���������� ������ (~), ����������� (�� ���������), ���� ��� ������ ��� �������� ������ (�.�. ����� ��������� ������ ���������� �������). ���� ������ ������ ���������� ��� ������ � ����� ��������� � ����� ����� ������, � ������� ����� ���� �� ��������� ������. ��������� ��������� ������ ���:

format PEOPLE = Name: @������< Comment: ^�������������x

$name, $comment

$comment $comment $comment

 

������, ���� ����������� �������� ����� ��� ������, ������ � ��������� ������ ����� ������������� ���������.

��� �����, ���� ����������� �������� ������ ������� �����? �� ����� �� ������� ����� �������� ����� ��������� ���� ����� ����� �������, �������, ��� �������� ����� ������. ���, ������, ������������ ���� � ���, ��� Perl �������� �������, ������� ���������� ��� ��� ������������� ���������: ����� ������, ������� �������� ��� ����� ������� ������, ������������� ����������� �� ��� ���, ���� ��������� �� ����� ��������� ������ �������. (��� ������ ������ �����������.) � ����� ���� ����������� ������� ����������� ����� ���:

format PEOPLE = Name: @<������ Comment: ^�������������^

$name, $comment

$comment

����� �������, ��� ����� ���������, ������� �� ����� �� ������� ����������� � ����, ��� ��� ��������.

�������, ��� ������ �������� ����������� ���������� ������ �������, ����� � ��������� ������ ������ ������ ����� ������. ��� ������, ��� � ���� ������ �� ����� ��������� ���������� ����� (����� �������� ������� � �����), ����� ��� ������� �� ������ ������.

������ ������ ��������

������ ������ � �������� ����� ��������� �� ���������� ����������, �������� �� �������. ���������� ������ ������ ���������� �� ������� ��������, ������ ��� � ����������� ����� �� ��� ����� �� ���������� ��������. ������� � ������, ����������� �� ������, ������, ��� �������, ���������� ������� �������, ��� ���� ����� ��������� ������ ������ ��� ������� �������� �� ����� ��������. � ��������, ����� ���� �� ����� ��������� ������ Perl-��������� � ���������� ��� �����-���� �������� (����� ����, ���� ���������� �� Perl), ������� ��������� ����� �������� �� ��������. ����������, ������, ����� ������ ������.

Perl ��������� ���������� ����������� ������ ������ ��������, � ������� �������� ����������� ����� ������������ ���������. Perl ������������ ��� �������� ������, ������������ ��� ������ ������� ��� ����������� ����������� �����. ���� ��������� ������ �� ��������� �� ���������� ����� ������� ��������, Perl ������ ������ �������� �� ����� ��������, �� ������� ������������� ������� ����� ������� ������ �������� � �����, ������� ��������� � �������������� ������� ��� ����������� ����������� �����. ��������� ����� �����, ���������� � ���������� ������ ������ ������� write, ������� �� ����������� �� ��������� ������� (���� ������ �� �� ��������� �����, ��� �� ���������� �� ����� ��������).

������ ������ �������� ������������ ��� ��, ��� � ������ ������ ������. ��� ������� ������ �������� ��� ����������� ����������� ����� �� ��������� ������� �� ����� ����� ����������� � �������� _��� (����������� ���������).

���������� $% � Perl ������������ ��� ���������� ������� ������� ������ �������� ��� ����������� ����������� �����, ��� ��������� ������������ ��� ���������� � ������� ������� ������ �������� ��� ��������� �������. ��������, ���������� ���������� ����������� ������� � ���������� �������� ��������� ������������� ������ �������� �������� �� �������� ������� � ������������ �������� �������� ������ ��������:

format ADDRESSLABEL_TOP = My Addresses -- Page @< $%

����� �������� �� ��������� � 60 �����. ���� �������� ����� ��������, �������� �������� ����������� ����������, � ������� �� ������ �������.

Perl �� ��������, ���� �� ���������� ��� ����� �� ����������� ����� ������� print �� ������� ����� � ���������, ���������� ���� ����� �����, ������� ����� ���������� �� ������� ��������, �����������. ��� ������� ���� ���������� ���� ���, ����� � ������� ����� � ��� �� �������� �������� �� ������ ��� ����������, ���� ����� ���������� print �������� ���������� "����� ����� �� ������� ��������". ����� ������ �� ������, ��� ����� �������� ��� ��������.

��������� � �������� ��������� �� ���������

�� ����� ������� �� ������������� � ��� ��� ���� ��������� �������� "�� ���������". � Perl ������� ������ ������ ���� "���������" ����������� ��� ���� �������. ������� ��������� �� ����.

��������� ����������� ����� � ������� ������� select()

����� �� �������� � ������� print � ����� 6, � ��������, ��� print � print stdout ���������, ������ ��� stdout � ��� ��������� �� ��������� ��� print. ��� �� ������ ���. ��������� ��������� �� ��������� ��� print (� ����� ��� write � ��� ���������� ��������, �� ������� �� ����� ���������) � ��� ��������� � ������� ������ ���������� �����.

������� ��������� � ������� ������ ���������� ����� � ��� stdout, ��������� ���� ���������� �������� ������ �� ����������� �����. �������� ��������� � ������� ������ ���������� ����� ����� � ������� ������� select. � �������� ��������� ��� ������� ��������� ��������� ���������� ����� (��� ��������� ����������, ������� �������� ��� ����������� �����). ��������� ���������� � ������� ������ ����������� ����� ������ �� ��� ����������� ��������, ������� �� ���� �������. ��������:

print "hello world\n"; # ���������� print STDOUT "hello worldVn"

select (LOGFILE); # ������� ����� ���������� �����

print "howdy, world\n"; # ���������� print LOGFILE "howdy, world\n"

print "more for the log\n"; # ��� � LOGFILE

select (STDOOT); # ����� ������� STDOUT

print "back to stdout\n"; # ��� ���� �� ����������� �����

�������, ��� �������� select � "������"; ����� ������ ������ ����������� �� �������� "��������� � ������� ������" �� ���������� ��������� �������� select.

����� �������, ����� ������� ����������� stdout �� ��������� � �������� print � write ����� ������� ���: stdout � ��������� � ������� ������ ���������� �� ���������, ��� ������ ���������� �� ���������.

� ������������� ����� ��������� ������������� ����� ���������� � ������� ������ ����������� �����. �������������, ����� ���������� ������� ����� ��������, ������ ������������ � ���������, ��� ��� ��������� ����������� ������ ������ ������� ����-�� "������", ������ ��� ������������, �����������, �������� ��������� � ������� ������ ���������� ����� � �� ������������ ���! ��� �� ������ ������ "������ �����������" ������������? ���� ��� "�����", ��� ������� ���������� � stdout, ��� ����� ������������ ��������� ���������� � ������� ����, �������� �� ����������� ����. � ���� ���������, ������� ������� ������������, ��� �������� ��������� ���������� ����� � ��� �����?

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

$oldhandle = select LOGFILE;

print "this goes to LOGPILEW;

select ($oldhandle); # ������������ ���������� ����������

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

��������� ����� �������

��� ������� �� ��������� ��� ����������� ����������� ����� ��������� � ������ ����� �����������. ��� ���������� � ������� ������ ����������� ����� ���� ������� ����� ��������, �������� ����� ��� ������� ����������� ���������� $~. ����� ����� ��������� �������� ���� ���������� � ����������, ����� ������� ������ ��� ���������� � ������� ������ ����������� �����.

��������, ����� ������������ ������ addresslabel � ������������ stdout, ������� ������ ��������:

$~ = "ADDRESSLABEL";

� ���, ���� ����� ���������� ��� ����������� report ������ summary? ��� ����� ���������� ������� ����� ���� ���������:

$oldhanlde =� select REPORT;

$~ � "SUMMARY";

select ($oldhandle);

����� � ��������� ��� �� �������

write (REPORT) ;

�� ��� ����� ��������� ����� �� ���������� report, �� � ������� summary*.

�������� �������� �� ��, ��� �� ��������� ���������� ���������� � ��������� ����������, � ����� ������������ ���. ���� ����� � ������� �������� ����� ����������������. � ���� �������� ��������� ��, ��������, ������ �� ���������� ������������ ������ ����� �� ��������, � �� ������������ ��, ��� stdout � ���������� �� ���������.

������� ������� ������ ��� ����������� ����������� �����, �� ������ ���������� � ����� ������ ����� ������ ��������.

��������� ����� ������� ������ ��������

����� ��� ��, ��� ����� ��������� ���������� $~ �� ����� �������� ��� ������� ��� ����������� ����������� �����, ��� ����� ��������� ���������� $ �� ����� ������ ������ ������ ��������. ��� ���������� �������� ��� ������� ������ �������� ��� ���������� � ������� ������ ����������� ����� � �������� ��� ������ � ������, �.�. �� ������ ��������� �� �������� � ������ ������� ��� �������, � ����� �������� ���, �������� ���� ���������� ����� ��������.

* ��������-��������������� ������ FileHandle, �������� � ������ ������������ ������������ Perl, ������������ ���������� ���� ������ ����� ������� ��������.

��������� ����� ��������

���� ��������� ������ ������ ��������, ����� �������� ����������� ������ ��������. �� ��������� ����� �������� ����� 60 �������, �.�. ���� ���������� ������ ������� write �� ��������� �� ����� 60-� ������, �� ����� ���������� ������� ������ ������������� ���������� ������ ������ ��������.

������ 60 ����� � �� ��, ��� �����. ���� �������� ����� ��������, ��������� ���������� $=. ������ ���������� �������� ������� ����� �������� ��� ���������� � ������� ������ ����������� �����. �����-����, ��� ������ ����������� stdout (���������� � ������� ������ ����������� ����� �� ���������) �� ������ ����� ������������ �������� select. ��� ��� ������� �������� ���������� ����� logfile ���, ����� �������� ��������� 30 �����:

$old = select LOGFILE; # ������� LOGFILE � ��������� ������ ���������� $= � 30;

select $old;

��������� ����� �������� �������� � ���� ������ ��� ��������� ������ ������� ������ ��������. ���� �� ���������� ����� ����� ����� ������� ������ � ���������� ����� � �����-�� �������, �� ��� ����� �������� ��� ����, ������ ��� ������ ������ �������� ���������� ��� ������ �� ������ ������� write.

��������� ��������� �� ��������

���� �� �������� ���� ����� � ���������� ����� � ������� ������� print, �� �������� �������� ����� ����� ������������, ������ ��� Perl �������� ������� ����� ������ ��� ������� write. ���� �� ������ ���� Perl �����, ��� �������� ��������� �������������� �����, ����� ��������� ���������� ������� ����� Perl, ������� �������� ���������� $-. ��� ���������� �������� ����� �����, ���������� �� ������� �������� ��� ���������� � ������� ������ ����������� �����. ������ ������� write ��������� ����� ���������� ����� �� ����� ���������� ���������� �����. ����� �������� ����� �������� ��������� ����, ���������� ������ ������ �������� � �� ���������� $= (�������� ����� ��������) ���������� �������� $-.

��������, ����� �������� Perl, ��� �� ������� � STDOUT �������������� ������, ����� ������� ���������:

write; # ������� ������ STDOUT ��� STDOUT

print "An extra line... oops!\n"; # ��� ���� � STDOUT $- --; # ���������������� $-, ����� ��������, ��� � STDOUT ����� ������ �� �� write

write; # ���������, ���� �������������� ������

� ������ ��������� $- ��������������� � ���� ��� ������� ����������� �����. ��� ��������� �������������, ��� ������ ������ �������� ����� ������ ���������, ���������� ��� ������� ����������� ����� ��� ���������� ������ �������� write.

����������

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

1. �������� ���������, ������� ��������� ���� /etc/passwd �� ����� � ������� �� ����� ��� ������������, ������������� (�����) ������������ � ��� �������� ��� � ��������������� ��������. ����������� ������� format � write.

2. �������� � ���������� ��������� ������ ������ ��������. (���� ��� ���� ������� ������������ ��������, ��, ��������, �������� ���������� ����� �������� ���-�� � 10 �����, ����� ����� ���� ������������ ��������� ����������� ������ ��������.)

3. �������� � ������ �������� ����� ��������, ����� ��� �� ������ ����������� page I, page 2 � �.�.




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


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