рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ рдЫреЛрдбрд╝ рджреВрдБрдЧрд╛

рдореИрдВ рдкрд░реНрд▓ рдХреЛ рдмрджрдирд╛рдо рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд░рдЦрддрд╛ред рдореБрдЭреЗ рдкрд░реНрд▓ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИред
рдЖрдкрдХреЛ рдмрд╕ рдкрд░реНрд▓ рдореЗрдВ рдПрдХ рд╕реВрдЪреА рдФрд░ рдПрдХ рд╕рд░рдгреА рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

use Perl or die; 


 #!/usr/bin/perl use strict; my $x = ('a', 'b'); print $x; 

рдирд┐рд╖реНрдХрд░реНрд╖:
b



 #!/usr/bin/perl use strict; my @a = ('a', 'b'); my $x = @a; print $x; 

рдирд┐рд╖реНрдХрд░реНрд╖:
2


 #!/usr/bin/perl my @a = ('a', 'b'); my ($x) = @a; print $x; 

рдирд┐рд╖реНрдХрд░реНрд╖:
a


 #!/usr/bin/perl my @a = ('a', 'b'); print scalar @a; 

рдирд┐рд╖реНрдХрд░реНрд╖:
2


 #!/usr/bin/perl print scalar ('a', 'b'); 

рдирд┐рд╖реНрдХрд░реНрд╖:
b


 #!/usr/bin/perl $\ = "\n"; my $x = ('a', 'b', 'c'); print "x = $x"; my $x = @{['a', 'b', 'c']}; print "x = $x"; my $x = (@{['a', 'b', 'c']}); print "x = $x"; 


рдирд┐рд╖реНрдХрд░реНрд╖:
x = c
x = 3
x = 3


 #!/usr/bin/perl use strict; my $x; my $y; $y = ($x = ('a', 'b', 'c')); print "x = $x\n"; print "y = $y\n"; 

x =
y =

 #!/usr/bin/perl use strict; my $x; my $y; $y = (($x) = ('a', 'b', 'c')); print "x = $x\n"; print "y = $y\n"; 

x = a
y = 3

рдореИрдВ рдкрд░реНрд▓ рдХреЛ рдмрджрдирд╛рдо рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд░рдЦрддрд╛ред рдореБрдЭреЗ рдкрд░реНрд▓ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИред

 use Perl or die; 


рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ: perldoc perldata, "рд╕реВрдЪреА рдореВрд▓реНрдп рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ" рд╕реЗ рдкрдврд╝реЗрдВ



рдСрдлрдЯреЙрдк, рд╡рд┐рднрд┐рдиреНрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рд╕реЗ рдореИрдВрдиреЗ рдХреБрдЫ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реАрдЦрд╛:
 #!/usr/bin/perl use strict; use Data::Dumper; sub test1 { my %hash; $hash{shift} = 1; print Dumper \%hash; } sub test2 { my %hash; $hash{+shift} = 1; print Dumper \%hash; } test1('test'); test2('test'); 

рдирд┐рд╖реНрдХрд░реНрд╖:

 $ VAR1 = {
           'рдкрд╛рд░реА' => 1
         };
 $ VAR1 = {
           'рдкрд░реАрдХреНрд╖рдг' => 1
         };


рд╣реИрд╢ рдореЗрдВ, рдХреБрдВрдЬреА рдирд╛рдо рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рддреБрд░рдВрдд рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдпреВрдиреАрд░реА рдкреНрд▓рд╕ рднреА + рд╢рд┐рдлреНрдЯ рдСрдкрд░реЗрд╢рди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд $ _ [x], рдЬрд╣рд╛рдВ x @_ рд╕рд░рдгреА рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ


 s ggggg; 

рдпрд╣ рд╕рдордХрдХреНрд╖ рд╣реИ
 s///g; 


s рдСрдкрд░реЗрдЯрд░ рдЖрдкрдХреЛ рдЕрдиреНрдп рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде / рд╕реАрдорд╛рдВрдХрдХ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣рд╛рдБ рд╡рд░реНрдг g рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ
рдЕрд░реНрдерд╛рддреН, рдпрд╣ s /// gg рд╣реИ; рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ s /// g рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ; рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдПрд╕ рдХреЗ рдмрд╛рдж рдПрдХ рдЬрдЧрд╣ рд╣реИ рддрд╛рдХрд┐ рдореЛрддреА рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдХреБрдЫ sggggg рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░ рд╕рдХреЗ; рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реАрдорд╛рдВрдХрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ /

рдлрд┐рд░ рд╕реЗ, рдореИрдВ рдЖрдкрдХреЛ рдУ = рдбреЗрдкрд░реНрд╕ рдореЙрдбреНрдпреВрд▓ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ рд╕рд┐рдВрдЧрд▓-рд▓рд╛рдЗрди рдкрд░реНрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдореНрд╕ рдореЗрдВ рдмрд╛рдд рдХреА рдереА, рдЬреЛ рдЖрдкрдХреЛ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рдПрдЧрд╛:
 perl -MO=Deparse -le "s ggggg;" 

 BEGIN {$ / = "\ n";  $ \ _ "\ n";  }
 s /// рдЬреА;
 -рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдареАрдХ рд╣реИ




 #!/usr/bin/perl use strict; use Data::Dumper; use constant key => 1; my %hash; $hash{key} = 1; print Dumper \%hash; my %hash2; $hash2{+key} = 1; print Dumper \%hash2; my %hash3; $hash3{-key} = 1; print Dumper \%hash3; 

рдирд┐рд╖реНрдХрд░реНрд╖:
 $ VAR1 = {
           'рдХреА' => 1
         };
 $ VAR1 = {
           '1' => 1
         };
 $ VAR1 = {
           '-рдХреА' => рез
         };

рдЕрдЧрд░ "рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╣реИ рддреЛ рдпреВрдирд┐рд░реА" рдирдХрд╛рд░рд╛рддреНрдордХ рдЕрдВрдХрди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдСрдкрд░реЗрдВрдб рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЛрдг рдЪрд┐рд╣реНрди рд╕рдорд╛рд╣рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИред

рдорд╛рдЗрдирд╕ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рдордиреЗ рд╣реЛрдиреЗ рдкрд░ рдорд╛рдЗрдирд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдЖрддрд╛ рд╣реИ, рддреЛ рдорд╛рдЗрдирд╕ рдФрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╕реЗ рдпреБрдХреНрдд рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред

UPD : рд╕рдВрднрд╡рдд: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдЧрд▓рдд рд╕рдордЭрд╛ рдФрд░ рдореБрдЭреЗ рдЛрдг рджреЗрдиреЗ рд▓рдЧреЗ, "рдореИрдВрдиреЗ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛"

UPD 2 :
рдЖрдЦрд┐рд░реА рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╣рддрд╛ рд╣реИ
"рд╕реНрдХреЗрд▓рд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реВрдЪреА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рджрд╛рдИрдВ рдУрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд ┬╗

рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╣рдо рд╕реВрдЪреА рдореЗрдВ рдХреБрдЫ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕реВрдЪреА рдореЗрдВ рдЬреЛ рднреА рддрддреНрд╡ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  $x = (($foo,$bar) = f()); 

$ x рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдл рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ ()
UPD 3 : рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рд▓реЛрдЧреЛрдВ рдиреЗ рдорд╛рдЗрдирд╕рдХреБрд▓рд╕ рдХрд╛ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рджрд┐рди рдХреЗ рджреМрд░рд╛рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ (рд╢рд╛рдпрдж 15:00 рдмрдЬреЗ) рдореИрдВ рд▓реЗрдЦ рдХреЛ рдорд╕реМрджрд╛ рдкреНрд░рддрд┐рдпреЛрдВ рдореЗрдВ рдбрд╛рд▓реВрдВрдЧрд╛ рддрд╛рдХрд┐ рдХрд░реНрдо рди рдЦреЛрдПрдВред
рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓реЗрдЦ рдкрд╕рдВрдж рдЖрдпрд╛ рд╣реЛ рддреЛ рдЗрд╕реЗ рд╕реЗрд╡ рдХрд░реЗрдВред
UPD 4 : рдХрд░реНрдо рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореЗрд░рд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛, рд╣реИрд╢ {рд╢рд┐рдлреНрдЯ} рдФрд░ sgggg рдХреЗ рд╕рд╛рде рдФрд░ рдЙрджрд╛рд╣рд░рдг рдЬреЛрдбрд╝реЗ;
UPD 5 (08.28.2012) : рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╢реВрдиреНрдп рдЛрдг рдХреЗ рд╕рд╛рдеред

Source: https://habr.com/ru/post/In150140/


All Articles