рдореИрдВ рдкрд░реНрд▓
рдХреЛ рдмрджрдирд╛рдо
рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп
рдирд╣реАрдВ рд░рдЦрддрд╛ред рдореБрдЭреЗ рдкрд░реНрд▓ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИред
рдЖрдкрдХреЛ рдмрд╕ рдкрд░реНрд▓ рдореЗрдВ
рдПрдХ рд╕реВрдЪреА рдФрд░ рдПрдХ рд╕рд░рдгреА рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
use Perl or die;
рдирд┐рд╖реНрдХрд░реНрд╖:
b
рдирд┐рд╖реНрдХрд░реНрд╖:
2
рдирд┐рд╖реНрдХрд░реНрд╖:
a
рдирд┐рд╖реНрдХрд░реНрд╖:
2
рдирд┐рд╖реНрдХрд░реНрд╖:
b
рдирд┐рд╖реНрдХрд░реНрд╖:
x = c
x = 3
x = 3
x =
y =
x = a
y = 3
рдореИрдВ рдкрд░реНрд▓
рдХреЛ рдмрджрдирд╛рдо
рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп
рдирд╣реАрдВ рд░рдЦрддрд╛ред рдореБрдЭреЗ рдкрд░реНрд▓ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИред
use Perl or die;
рд╡рд┐рд╡рд░рдг рдпрд╣рд╛рдБ: perldoc perldata, "рд╕реВрдЪреА рдореВрд▓реНрдп рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛рдУрдВ" рд╕реЗ рдкрдврд╝реЗрдВ
рдСрдлрдЯреЙрдк, рд╡рд┐рднрд┐рдиреНрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рд╕реЗ рдореИрдВрдиреЗ рдХреБрдЫ рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╕реАрдЦрд╛:
рдирд┐рд╖реНрдХрд░реНрд╖:
$ 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 /// рдЬреА;
-рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдареАрдХ рд╣реИ
рдирд┐рд╖реНрдХрд░реНрд╖:
$ 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) : рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рд╢реВрдиреНрдп рдЛрдг рдХреЗ рд╕рд╛рдеред