рдкрд░реНрд▓ 5.10 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ?

рджреВрд╕рд░реЗ рджрд┐рди, рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдкрд░реНрд▓ рдХрд╛ рдкрд╣рд▓рд╛ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╕рд╛рдордиреЗ рдЖрдпрд╛ - 5.10.0 RC1 ред рд▓реЗрдХрд┐рди рдкрд┐рдЫрд▓реА рд░рд┐рд▓реАрдЬ (5.8) рдХреЛ 5 рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВред

рддреЛ 5.10 рдореЗрдВ рд╣рдорд╛рд░рд╛ рдХреНрдпрд╛ рдЗрдВрддрдЬрд╛рд░ рд╣реИ?

рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░реНрд▓ 5.10 рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрдд рд╣реИ, рдЖрдЧрд╛рдореА рдкрд░реНрд▓ 6 рдХреЗ рд╡рд┐рдкрд░реАрддред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рдВрд╕реНрдХрд░рдг 5.10 рдХреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЕрдХреНрд╖рдо рд╣реИрдВред рд╡реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧ рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рд╛рдЧреНрдорд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╕рдВрдпреЛрдЧрд╡рд╢, рдПрдХ рд╢рд╛рдмреНрджрд┐рдХ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИ; рдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдЙрдкрдпреЛрдЧ 5.10 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ред

рд╕рдорд╛рд░реЛрд╣ рдХрд╣реЗрдВ
рдЕрдЪреНрдЫреЗ рдкреБрд░рд╛рдиреЗ рдкреНрд░рд┐рдВрдЯ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЗрди рдореЗрдВ "\ n" рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
#
print "$_\n" for @lines;
#
say for @lines;


рд╕рдВрдЪрд╛рд▓рдХ //
рдорд┐рд╢реНрд░рдг || рдФрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд, рдЬрд┐рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд-рдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рдЭреВрдареЗ" рдореВрд▓реНрдпреЛрдВ "" рдФрд░ 0 рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
$var = $_[0] || 'default';
рд╕рд╣реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ:
$var = $_[0];
$var = 'default' unless defined $var;
#
$var = defined $_[0] ? $_[0] : 'default';

рдкрд┐рдЫрд▓реЗ рджреЛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдирдП // рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ:
$var = $_[0];
$var //= 'default';
#
$var = $_[0] // 'default';


рд╕рдВрдЪрд╛рд▓рдХ ~~
рдпрд╣ рдСрдкрд░реЗрдЯрд░ рд╕реНрдорд╛рд░реНрдЯ рдорд┐рд▓рд╛рди рдпрд╛ рд╕реНрдорд╛рд░реНрдЯ рдорд┐рд▓рд╛рди рдХреЗ рддрдВрддреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рд░рд╛рд╣рдиреАрдп рд╣реИ (рдЕрд░реНрдерд╛рдд, $ ~ ~ $ b $ b ~~ $ a рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ) рдФрд░ рдЗрд╕рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
say "$x " if $x ~~ @array; # grep $_ == $b, @$a grep $_ == $b, @$a
say "foobar " if @x ~~ /foobar/; # grep /$b/, @$a
say "$key " if $key ~~ %hash # exists $a->{$b}

рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, ~~ рд╕рднреА рдореЗрдВ рдПрдХ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджрд░реНрдн-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдХрдореАред рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдореЗрдВ рд▓рд┐рдВрдХ рд╕реЗ рдкреВрд░реНрдг рд╡реНрдпрд╡рд╣рд╛рд░ рддрд╛рд▓рд┐рдХрд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред

рджрд┐рдпрд╛ - рд╕реА-рдирд┐рд░реНрдорд╛рдг рд╕реНрд╡рд┐рдЪ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ
рдЕрдм рдпрд╣ рдирд┐рд░реНрдорд╛рдг рдмрд┐рд▓реНрдЯ-рдЗрди рд╣реИред рдпрд╣ рддреАрди рдирдП рд╢рдмреНрджреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рджрд┐рдП рдЧрдП, рдХрдм рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕реНрдорд╛рд░реНрдЯ рдорд┐рд▓рд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг!
#
if( $var ~~ undef ) { ... }
elsif( $var ~~ $var ) { ... }
elsif( $var ~~ @array ) { ... }
elsif( $var ~~ %hash ) { ... }
elsif( $var ~~ /regexp/ ) { ... }
else { ... }
#
given( $var ) {
when( undef ) { ... }
when( $var ) { ... }
when( @array ) { ... }
when( %hash ) { ... }
when( /regexp/ ) { ... }
default { ... }
}

рдЦреЗрд▓ "рдЕрдиреБрдорд╛рди рд╕рдВрдЦреНрдпрд╛" (:
use feature qw( switch say );
my @guessed;
my $num = int( rand 100 ) + 1;
while( my $guess = ) {
chomp $guess;
given( $guess ) {
when( /\D/ ) { say ", " }
when( @guessed ) { say " " }
when( $num ) { say " !"; last }
when( $_ < $num ) { say ""; continue }
when( $_ > $num ) { say ""; continue }
push @guessed, $_;
}
}


. (?...). тАФ \k. %+ . %-, , , .
# name=value
$str =~ /(?\w+)=(?\w+)/;
say "The value of $_ is $+{$_}" foreach keys %+;
(possessive quantifiers). - , . ┬л ┬╗ , ┬л?┬╗ ┬л+┬╗. : ?+, *+, ++, {min,max}+.


state-
C- static. state , .
sub counter {
state $i = 0;
return $i++;
}


Filetest -X

-x $file && -w _ && -f _

-f -w -x $file

тАж
. , perl5100delta.pod

:
Perl 5.10 for People Who Aren't Totally Insane What's new in Perl 5.10?

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


All Articles