          PERL

          11  ,     CGI,    -
   C  C++.      
      Perl.  -
   Perl   .       
 ,   Perl,    -
    ,      -
    Internet   Web.    
     ,     
 CGI-.       
  Perl,           
.  ,         ,
,       Perl.  -
       Perl,  
    .        
         
?  Perl    ,   -
    . ?   -
     Perl . ?   Perl,
  CGI- ?  Perl      
    .      
         -
  Web. ?  Perl   ,
      Perl.

     PERL   
     Perl (Practical Extraction and Report  Language  )  
,   ,    
     . Perl -
   ,      -
    ,   -
  ,         
 UNIX.  Perl      .
   ,    <Web-> 
  ).  ,    Perl    5
,  CD-ROM,    .  ,  ,
     Perl  4,  -
    5     Web.

      PERL
       Perl    (Larry Wall).   -
  1986        -
     UNIX.     -
      ,    (Wall)  
    .   Perl oa -
                (Practical
Extraction  Report Language).     
  Perl       .
 Perl    ,      '  
   .     
Perl      .

     PERL -   
     Perl   .   ,    
,    Perl,      
 Perl  "   ,    -
 .       
Perl   ,     
 Perl .      UNIX-, , -
,    ; ,    shell,
 sed  .  .     ,   ,   
    ,       .
     DOS  Windows,      (.BAT)-
    BASIC     ,   
   .     
     MS-DOS,  , ,
    ,    
  .     -
   ,           
 Perl. .

      PERL    /++
      Perl     -
        ,   .  
    1 Perl,    ,  -
  if  for,     Perl   
.     Perl,   ,    -
,   .      -
 ,    ,  -  -
,       Perl.      
,   Perl       ,    
   .     ,  -
 ,       
.

        PERL
     Perl      
     .   -
    Perl.      -
     : ?  ,
        -
 ?        ,
      ?  -
   ?     -
 ?      ,  -
    ,     ,
    ?  /  ?  -
  ,   ,   
        (template)
?   . ,         
  ?    ,   -
 ,        ?  
  ?      -
,  

      PERL
      ,   Perl,  -
    .       -
   Perl     .   -
       ,   -
    .            
   Perl,          CGI-
.

      PERL   
      UNIX-      -
  ,      ,    
  ,    -  .  -
, -   .  MS DOS
    .   grep  -
 UNIX         .
        ,  -
   .     -
  ,      .      -
,   ,     .
Perl      .   -
,       grep,  
     Perl:

$pattern = shift(@ARGV); #   
while (<>)
        { #     
   print if (/$pattern/); # output line if it matches
}

                
  .    ,   -
   ,         
.   ,       
.           -
     Perl.

       PERL   
            -
 CGI,       ,     
   .    -
           -
,         
 .      Web-,    -
 ,       FTP-,        
Internet,        -
.          
   ,     
 .      ,   
  ,     .    
   Internet     UNIX  
   .    -
           .
   Perl,        
 ,   ,    -
         -
.      ,    
 .  Perl       
   ,     
 .        Perl,
  taintperl,     -
         
      ,   -
 .       
  taintperl,       
,          ,
         -
 .

     FRONTEND-     
       frontend         
,          -
 .     -
               
  ,       -
. Frontend-     -
,       .  
,         
   Perl,      
   . Perl   -
     (    
 )    .       -
     Perl         -
 ,   /     
 .           
Perl           -
    Frontend   . -
    Perl     
    . , oraperl -
       Oracle.

       PERL   CGI-
C.
          ,  CGI    
Web ooo     , 
    .     -
   CGI          -
,                .
 CGI        
  Web,   Web-. CGI-  
  L-,    -
 ,   ,   ,
      ,      
 .  ,      -
 ,    .

        PERL
      ,        -
     Perl     -
 CGI.      ,    Perl 
        Perl. -
  Perl  ,        
,   ,    .    -
      .

<HELLO WORLD>   PERL
           
  ,     <Hello World>.   
          
  <Hello World>.      
   <Hello World>  ,    -
 :

#     <Hello World>
printf("Hello world\n");
printf("%s\n",'Hello world');
print "Hello World", "\n"


         .    Perl
  (#)  .  Perl   ,
   ,       .  
           
Perl.       ,     -
   .      
printf   ,    .    ,
     main.      -
  (  ),    
,      main.    -
 Perl        -
  .   ,      printf,
-       , 
 ,         -
  ('')    (""),  -
  .    Perl      -
  . ,   Perl -
       "\n"    -
 .   Perl     -
  , . .  ,   -
 . , Perl     -
 ('\n')    ('\')  'n',        
 .  ,      
 print,     .      -
       . -
,             
 Per].        .
Perl       ,     
    ,   .
  ,       -
,       .

      PERL
            Perl  -
.      Perl   , 
  .     Perl.txt    CD-ROM,
    .   ,   Perl  -
 .          Perl,
 :

C:\PERL>perl script-name <ENTER>

     ,     hello.pl,   -
  :

Print "Hello world\n"

           :

C:\PERL>perl hello.pl <ENTER>

          :

Hello World

       ,     UNIX-,    
   Perl   ,    -
 .     ,     
,       :

#!/usr/bin/perl
print "Hello world\n"

           ,  -
  ,  Perl.  ,    -
      ,   Perl,  -
 .    ,   UNIX   
shell         .
    #!,  shell   -
       .      
    /usr/bin/perl. Shell  
 Perl .          ,
   chmod  ,   -
  ,     (,  chmod  +  
hello.pl).     shell,   -
   rehash  ,     
shell,     . ,   -
    Perl,       -
 /usr/bin  .

:   Perl     -
.1,   .      Perl
  , , ,     -
  .

       PERL
           -
 Perl.           -
     Perl.        
  ,         -
 .      Perl -
  ,        
Perl.        
,   ,      -
.   Perl    Perl.    ,
  -d     :

C:\PERL> Perl -d hello.pl <ENTER>

        Perl   hello.pl   -
.    UNIX-,    -
 #!/usr/bin/perl -d     Perl.   -
  Perl     ,     
  : : \> Perl -de 0 <ENTER>   
    -d  Perl    -
  ,   -e 0   Perl
,    0 .    0  ,
 Perl   .   Perl     
 ,       ,  -
 ,     :

Loading DB routines from $RCSfile: perldb.pl,v $$Revision: 4.0.1.3
$$Date: 92/06/08 13:43:57 $
Emacs support available.
Enter h for help.
main '(p1000159:1):
DB<1>

      Perl  ,     ,   
Can't locate perldb.pl @INC, , ,  Perl   
 .     readme-,  -
    Perl.       
  Perl,       .    -
     : ? h - -
       ?  n -  -
    ?  <CR> -   -
 n  s ?  p  -    print -
 ? q -   ? r -     -
 ? s -     (   )

     ,         
print  ,      Hello World:

DB<1> prinf "Hello World\n"; <ENTER>
Hello World
DB<2>

          ,    -
  .       -
      ,    -
   . ,      -
   .       
 : <ENTER>

DB<2>  "Hello World\n" <ENTER>
Hello World
DB<3>

       ,  ,     -
,     ,   
    DB.   , ,  ,
  ,       
     Perl .

:  ,          
 (debugger),      
<\>   ..       -
 .

          -
    :

DB<3> for ($i = 0; $i < 10; $i++) { \ <ENTER>
cont: print $i; \ <ENTER>
cont: } <EIITER>
0123456789
DB<4>

            0  9   
for,       .

        PERL
              -
.  ,       -
,    ,     ,
     .    Perl  -
     .      
    .     
 ,     Perl: ? -
: 127  127.0  1.272 ?  : Ox7F  0x7f
?  : 0177 (  0  ,      
 ) ? : "Hello World\n"  'Hello World'

,      Perl    ,
   0177  ,    
 127 :

DB<4>  0177 <ENTER>
127

     Perl      .    Perl
    ,   
    ,   .

:   ,   Perl    
 printf  ,   ,     
,      .

            -
       (double).    
,     .   -
,          ,
 Perl     .  ,     
  ,         
, Perl    .

:          -
      ,  ,  -
   Perl,        -
,   int().

       ,   Perl  
     :

print 6 & 3;            #  2
print 6.9 & 3.1         #
print 7 / 2             #  2.3333  
print int(7/3)          #  2

       ,   Perl      -
   :       -
,        ,   
  . ,    -
  ,     , ,  -
 ,     .   -
,      ,      
 ,  Perl    .   -
 Perl,         
 . Perl     -
,        .     ,
   ,       
.      -
,      ''  '0'.     ,
  <>> (),        
<>   -   <>.  ,   -
         ,
        <>.    
Perl           
 (list).       -  ,
     (array).

     
     Perl    : ,     
 .     ,    
     .   ,    
VAR, Var  var   .   
    var  -,    
 var.       Perl  
 .


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

      
      ,       -
 .    Perl    -
    ($).       -
 $age   35,      $name  -
  <Bob>.      print  
    :

$age = 35;
$name = 'Bob';
print ($name,'is',$age);

                       
SCALAR.PL,      :

C:\PERL> Perl SCALAR.PL <ENTER>
Bob is 35

     
        ,      -
,        .
     Perl    
     :


@days = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

print(@days);                   #  'SunMonTueWedThuFriSat'
print($days[4]);                        #  'Thu'
@weekdays = @days[1..5];        #   ('Mon','Tue','Wed','Thu','Fri')
@emptylist = ();                #  

         <>    -
 (@)         ([  ]).
       ,        
     ,    
   .         
   ,        .
  ($days[4])   ,  -
   .       
,     .  
  ($)   (@),         -
   .       -
.   ,     .
 $,    ,       .
  @weekdays    -
  @days.      @days -
  .   ,  Perl    -
.  ,      @days -
  .   ,    
    ,      
         -
,   :

@stuff = ($age, $name)
@FriendsOfMine = ('Joe','Mary', @FriendsOfYours);

          :

@weekend = @days[0,6] ;         #  ('Sun','Sat')
print (@days[1..5,0,6]);                #  'MonTueWedThuFriSunSat'

               
,       .  
   ,      -
  . ,    -
    stuff  ,     
   .   ,  
 2,       :

(@stuff >= 2) || die "Too much stuff! \n";

      die    Perl   -
      .     -
,      .  Perl
    $# ,   -
      .    ,
  for  $[  ,   
   ,   $#   -
   .      for -
    :

for ($i =$[; $i <= $#stuff; $i++)
        {
                print $stuff[$i];
        }

       for      
:

Print @stuff;

              
     ,      (,)   
 ,   (,)   (sequential
evaluation).    ,   -
,    ,   ,    -
   .  Perl   -
        -
.   :

@an_array = (1,2,3,4,5);
$a_scalar = (1,2,3,4,5);

         ,      
          
$a_scalar  5,     .  -
   :

print $assoc{1,2};
print @assoc{1,2};

            -
    ,         -
        .    
     ,     -
    ,    -
:


@x = @list;
$x = @list;

      
             -
,        .
   ,      -
         -
,        
     .    
   .    
:

$ages{'Bob'} = 35;
$ages{'Mary'} = 25;
$, = ' ';            # change output separator for print operator

print @ages{'Bob','Mary'};      #   '25 35'
print keys(%ages);              #  'Bob Mary'

for $name (keys(%ages))
        {
                print "$name is $ages{$keys}\n";
        }

       ,     
'$,' ( ,        ).
     ,      
  print      
.       , -
  '$,'.        
 .     ,     -
     .  ,  
@ages{'Bob', 'Mary'}    ,   
  .  @   ,   
 .        -
 ,    .

:    ,      @  -
  ,           -
     .     
#ages{' Bob'}, #ages{'Mary'}.     -
 (35, 25).

      print keys(%ages)   keys,  
     .    
%ages       ,   -
     .   ,
  for   ,      -
.  ,         -
  keys    for     -
  .  for   ,
   .  Perl,     ,   
,    ,   ,   -
  .     -
   .

: Perl   ,   
  .

      PERL
                Perl  -
      ,    
 Per]      . 
     Perl,     
  (type),     -
 *ptr           var.member  
var->member.   ,    Perl     
           
 .

      
          ,   
   .     
,   Perl      -
 ,    .  Perl    
    ,      atof() 
   .    Perl -
   : ? +  ? - -
    ? *  ? /  (  -
   ) ?  %    (   -
 )

      Perl:

$x = 2.5;
$y = 3;
print ($x + 2*$y);                      #  8.5
print (7 / $y);                         #  2.3333333
print int (7 / $y);                     #  2
print (7 % $y);                         #  1
print (7.5 % $y);                       #  1


:   Perl      -
 4ucw   ,      
          
    .

     :

print (7.9 % 3.6);              #   1   (7 % 3)  = 1

Perl      :
? ++        
? -         

     :

$x = 4;
++$x;
print $x;         #  5
$y = $x-;         #  x   y  x
print "$y $x"     #  5 4

     ,  Perl     -
   (**).     -
    :

$x = 2 ** 3;           #  8
$x = 2 ** 0.5;         #    2
$x = -2 ** -3;         # 1/(-2  ),  -1/8 (-0.125)

      
            
     .     -
    ,  Perl  
   ,   ,      32-
.           
Perl: ? |   ?  &   ?  ^  -
  ? ~   ? <<   ? >>  

    :
$x = 5;                         # 101  
$y = 3;                         # 011  
print $x | $y;                  # 7 (111)
print $x & $y;                  # 1 (001)
print $x ^ $y                   # 6 (110)
print  $x & ~1;                 # 4 (100)
print $x << 2                   # 20 (10100)
print $x >> 1                   # 2  (10)

    ,          
    ,    .

      
          .  
      ,   Perl  -
      ,   -
.       ,  -
   ,   Perl      
 .    ,  
 ASCII.          
 ,     .  12.1
  :

               
= =             eq        
!=              n         
>               gt         
<               it         
>=              g          
<=              l          
<=>             cmp         (  )

. 12.1.    Perl

         ,   -
      .    -
 (<=>  cmp)    -1, 0  1  -
  ,      ,  
,    .

:  cmp  Perl  ,    -
 Strcmp()     .

   :

$x = 5;                         # x  5
print ($x < 4);                 #  false,   0

      
            -
  <>  <>   .   Perl
      , .
.     .



   Perl  :

? ||  
? &&  

Perl      . -
 .  Perl   ,       
 ,    .  -
     Perl    
  :

? !      ()
? ?:    
? ,     

   (!)     -
  .      ,    Perl -
  (?:)   . ,  -
  ,   :

Condition ? true-result : false-result

,       
,      ,     -
:

$access = ($user eq 'Bob' ? 'Full' : 'Limited');

   <,>  (    
 )     ,  -
      .  Perl -
      -
      .   -
       for.

For ($i=0, $j=10; $i<10; $i++, $j-)
        {
                print i$,' ',$j
        }


      
      Perl      ,
,         
  .     :
?.   ?   ?  =~  -
   ? !~  ,   ,    -
 

     :

print 'b' . 'an' x 2 . 'a';        #  'banana'

      ,       
 -  ,     <banana>.
      ,  
    .      -
   < >.    -
  :

$var = 'banana';
print ($var =~ /ana/) ? TRUE : FALSE;

               
(=~)    ,    ana  -
 $var.        <-
>.

      
           ,   -
   Perl      -
.       ,     Perl  -
    ,    -
  ,    :
     =       +=      -=      *=      /=      %=      |=      &=
    ^=      ~=      <<=     >>=     **=     .=      x=

     LVALUES
       Perl,       ,  lvalue   
 ,        .  -
 ,  lvalue   ,   -
   , , lvalue   -
.  ,   Perl       
,   <Bob> = 32,   <Bob>  -
 lvalue.   ,      -
 $Bob, ,    $Bob = 32,  
 $Bob  lvalue.    Perl  ,
    lvalue,    -
. ,    (pack)  -
 (unpack)  ,      
       lvalues:

        @color = ($r, $g, $b);          #  
        ($r, $g, $b) = @color;          #  

            Perl,   -
       .   
    ,   -
:

        @items[2,4,7] = (100,200,300);

              
.         
 ,        
 ,    -  :

($arg1,$arg2,@rest) = @ARGV;    #     

         
             :

? ,     
? ..     
?     

              
        ,      
lvalues.       -
  ,       
    .    -
         
 . ,    -
   ,         @digits,
      :

@digits = 0..9;         #  (1,2,3,4,5,6,7,8,9)

      ,     -
            .
,   @days    (  -
).      @weekdays  
,     :

@weekend = @days[1..5];

     ,      -
     :

@hex_digits = (0..9,a..f);

              
  . ,      -
 1, 2, 3   :

         
     Perl        -
.     27 ,    
  ,    .    
Perl    UNIX,     -
   : ? -d    ?  - -
   ? -s    ?  -w -
,      

           .
      .  
   :

        if (-e,'perl.exe')
          {
                print 'File size is:' -s 'perl.exe';
           }
        else
           {
                print 'can\' t find perl.exe\n';
           }
        (-w 'SomeFile') || die "Cannot write to SomeFile\n";


       
         ,  Perl  -
  ,        
  .   12.2  -
        :

?  ++-
?  ! ~  
? **
? =~ !~
? * / % 
? +-
?  <<>>
?  -d - -s -w (   )
? <> <= >= It gt le ge
?  = = != < => eq ne cmp
? &
? |^
? &&
? ||
? ..
?
? : = += -= *=

. 12.2.    Perl    

            -
    .

       PERL
     Perl     ,      
  .  ,        if,
while,  do.  for  goto       
.     ,   continue  -
     Perl.       
 next,    break   last.   Perl  
  switch.  ,    
    Perl        -
.

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

        $Title = 'Web Programming';

            ,   Perl  
  ,   ,   -
    ({}),   :

        {
                # 
                #   
        }

             -
    .      ,    
 Perl         
  (scope)  .   -
       .  
          local.
           
.

      
          if.   
Perl  if       if      .
, ,    ,       if 
     ,    
 Perl        -
 ,  .

if (expr)
        statement;                 //   C    Perl

if (expr)
        {
                statement;    #      Perl
        }

         Perl else  -
      .    Perl -
          -
 :

//      Perl
if (expr1)
        statament1;
else if (expr2)
        statement2;
else
        ststement3;

      ,   Perl    
elsif:

if (expr1)
    {
        statament1;
    }
elsif (expr2)
    {
        statement2;
     }
else
     {
        ststement3;
      }

      UNLESS
            -
  (!)      -
,   :

if (!(expr))            //   
  {
        statement;
   }

         ,   Perl
   unless,     ,
      .

unless (expr)
    {
        statement;
     }

:     ,  Perl    -
 switch.

      DO
             
do,      .  -
,   do ,   -
 ,     .  ,  
 do    $Month   -
    $DayCount ,   
 :

$DayCount = do
   {
if ($Month eq 'September' || $Month eq 'April' || $Month eq 'June' ||
$Month eq 'November')
   {
        30;
    }
elsif ($Month eq 'Februry')
    {
        $Year & 3 ? 28 : 29;       #    
    }
else
    {
        31;
     }
            };

      ,   Perl     
   do.    do   do while, -
      .