Что нового в perl? 5.10 — 5.16
DESCRIPTION
Перевод презентации @rjbs "What's new in Perl? v5.10 — v5.16" http://www.slideshare.net/rjbs/whats-new-in-perl-v510-v516TRANSCRIPT
![Page 1: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/1.jpg)
Что нового в Perl?5.10 — 5.16
Рикардо Синес(Ricardo Signes, rjbs)
![Page 2: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/2.jpg)
Perl 5Что нового?
![Page 3: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/3.jpg)
Perl 5.10Для тех, кто не совсем безумен
![Page 4: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/4.jpg)
Perl 5.12Для использования каждый день
![Page 5: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/5.jpg)
Perl 5.14Для прагматиков
![Page 6: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/6.jpg)
Perl 5.16Для настоящих программистов
![Page 7: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/7.jpg)
Лексическая семантика!
![Page 8: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/8.jpg)
use feature ‘say’;say “Это тест!”;
{ no feature ‘say’; say “Это ошибка!”;}
![Page 9: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/9.jpg)
use 5.16.0;say “Это тест!”;
{ no feature ‘say’; say “Это ошибка!”;}
![Page 10: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/10.jpg)
#!/usr/bin/perluse strict;use warnings;use 5.16.0; # use feature ‘:5.16’;
my $x = Reticulator->new;$x->reticulate( @splines );
![Page 11: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/11.jpg)
#!/usr/bin/perluse strict;use warnings; # no feature;
my $x = Reticulator->new;$x->reticulate( @splines );
![Page 12: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/12.jpg)
#!/usr/bin/perluse strict;use warnings; # use feature ‘:default’;
my $x = Reticulator->new;$x->reticulate( @splines );
![Page 13: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/13.jpg)
array_base: $[
![Page 14: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/14.jpg)
Классные новые фичи!
![Page 15: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/15.jpg)
Лучше сообщения об ошибках
$str = “Привет, $name. Последний визит был $last. Сейчас $time.”;
perldiag
![Page 16: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/16.jpg)
$str = “Привет, $name. Последний визит был $last. Сейчас $time.”;
perldiag
Use of uninitialized value in concatenation (.) or string at hello.plx line 9.
Лучше сообщения об ошибках
![Page 17: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/17.jpg)
$str = “Привет, $name. Последний визит был $last. Сейчас $time.”;
perldiag
Use of uninitialized value $time in concatenation (.) or string at hello.plx line 9.
Лучше сообщения об ошибках
![Page 18: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/18.jpg)
state-переменные
my $LINES_READ = 0;sub read_line { $LINES_READ++; ...}
perlsub
![Page 19: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/19.jpg)
state-переменные
{ my $LINES_READ = 0; sub read_line { $LINES_READ++; ... }}
perlsub
![Page 20: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/20.jpg)
state-переменные
sub read_line { state $LINES_READ = 0; $LINES_READ++; ...}
perlsub
![Page 21: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/21.jpg)
Истина и определённость
perlop
![Page 22: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/22.jpg)
sub record_sale {
perlop
Истина и определённость
![Page 23: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/23.jpg)
sub record_sale { my ($product, $amount) = @_;
perlop
Истина и определённость
![Page 24: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/24.jpg)
sub record_sale { my ($product, $amount) = @_; my $price = $amount
perlop
Истина и определённость
![Page 25: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/25.jpg)
sub record_sale { my ($product, $amount) = @_; my $price = $amount || $product->price;
perlop
Истина и определённость
![Page 26: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/26.jpg)
sub record_sale { my ($product, $amount) = @_; my $price = $amount || $product->price; ...}
perlop
Истина и определённость
![Page 27: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/27.jpg)
sub record_sale { my ($product, $amount) = @_; my $price = $amount || $product->price; ...}
perlop
Истина и определённость
![Page 28: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/28.jpg)
sub record_sale { my ($product, $amount) = @_; my $price = defined $amount ? $amount : $product->price; ...}
perlop
Истина и определённость
![Page 29: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/29.jpg)
sub record_sale { my ($product, $amount) = @_; my $price = $amount || $product->price; ...}
perlop
Истина и определённость
![Page 30: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/30.jpg)
sub record_sale { my ($product, $amount) = @_; my $price = $amount // $product->price; ...}
perlop
Истина и определённость
![Page 31: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/31.jpg)
Новый оператор ИЛИ
sub record_sale { my ($product, $amount) = @_; $amount //= $product->price; ...}
perlop
![Page 32: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/32.jpg)
say $what
perlfunc
• новая встроенная функция say• делает тоже самое, что и print
• только добавляет \n в конце строки
![Page 33: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/33.jpg)
say $what
perlfunc
![Page 34: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/34.jpg)
perlfunc
print “Привет, мир!\n”;
say $what
![Page 35: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/35.jpg)
perlfunc
print “Привет, мир!\n”;
print “$message\n”;
say $what
![Page 36: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/36.jpg)
perlfunc
print “Привет, мир!\n”;
print “$message\n”;
print “$_\n” for @lines;
say $what
![Page 37: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/37.jpg)
perlfunc
print “Привет, мир!\n”;
say “Привет, мир!”;
print “$message\n”;
print “$_\n” for @lines;
say $what
![Page 38: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/38.jpg)
perlfunc
print “Привет, мир!\n”;
say “Привет, мир!”;
print “$message\n”;
say $message;
print “$_\n” for @lines;
say $what
![Page 39: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/39.jpg)
say $what
perlfunc
print “Привет, мир!\n”;
say “Привет, мир!”;
print “$message\n”;
say $message;
print “$_\n” for @lines;
say for @lines;
![Page 40: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/40.jpg)
![Page 41: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/41.jpg)
$ perl -e ‘print “Foo\n”’
![Page 42: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/42.jpg)
$ perl -e ‘print “Foo\n”’
$ perl -E ‘say “Foo”’
![Page 43: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/43.jpg)
Рекурсия!
sub fact {
my ($x) = @_; # must be +int
return $x if $x == 1;
return $x * fact($x - 1);
}
![Page 44: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/44.jpg)
Рекурсия!
sub fact {
my ($x) = @_; # must be +int
return $x if $x == 1;
return $x * fact($x - 1);
}
![Page 45: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/45.jpg)
Рекурсия!
my $fact = sub {
my ($x) = @_; # must be +int
return $x if $x == 1;
return $x * $fact->($x - 1);
};
![Page 46: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/46.jpg)
Рекурсия!
my $fact = sub {
my ($x) = @_; # must be +int
return $x if $x == 1;
return $x * $fact->($x - 1);
};
![Page 47: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/47.jpg)
Рекурсия!
my $fact; $fact = sub {
my ($x) = @_; # must be +int
return $x if $x == 1;
return $x * $fact->($x - 1);
};
![Page 48: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/48.jpg)
Рекурсия!
my $fact; $fact = sub {
my ($x) = @_; # must be +int
return $x if $x == 1;
return $x * $fact->($x - 1);
};
![Page 49: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/49.jpg)
Рекурсия!use Scalar::Util qw(weaken);my $fact = do { my $f1; my $f2 = $f1 = sub { my ($x) = @_; return $x if $x == 1; return $x * $f1->($x - 1); }; weaken($f1); $f1;};
![Page 50: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/50.jpg)
Рекурсия!
use 5.16.0; # current sub
my $fact = sub { my ($x) = @_; # must be +int return $x if $x == 1; return $x * __SUB__->($x - 1);};
![Page 51: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/51.jpg)
Дескрипторы файлов!
![Page 52: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/52.jpg)
autodie
autodie
open my $fh, ‘<‘, $filename;
while (<$fh>) {
...
}
close $fh;
![Page 53: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/53.jpg)
autodie
autodie
open my $fh, ‘<‘, $filename or die “couldn’t open $filename: $!”;while (<$fh>) { ...}close $fh or die “couldn’t close $filename: $!”;
![Page 54: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/54.jpg)
autodie
autodie
use autodie;open my $fh, ‘<‘, $filename;while (<$fh>) { ...}close $fh;
![Page 55: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/55.jpg)
autodie
autodie
use autodie;open my $fh, ‘<‘, $filename;while (<$fh>) { no autodie; rmdir or warn “couldn’t remove $_: $!”;}close $fh;
![Page 56: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/56.jpg)
autodie
autodie
use autodie;sub foo { my $filename = shift; open my $fh, ‘<‘, $filename; while (<$fh>) { ... }} # неявный вызов close БЕЗ autodie
![Page 57: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/57.jpg)
IO::File
perlopentut
sub stream_to_fh { my ($self, $fh) = @_; fileno $fh or die “can’t stream to closed fh”; while (my $hunk = $self->next_hunk) { print {$fh} $hunk; } close $fh or die “error closing: $!”;}
![Page 58: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/58.jpg)
IO::File
perlopentut
sub stream_to_fh { my ($self, $fh) = @_; $fh->fileno or die “can’t stream to closed fh”; while (my $hunk = $self->next_hunk) { $fh->print($hunk); } $fh->close or die “error closing: $!”;}
![Page 59: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/59.jpg)
IO::File
perlopentut
sub stream_to_fh { ... $fh->print($hunk); ... $fh->close or die “error closing: $!”;}
open my $target, ‘>’, ‘/dev/null’ or die “can’t open bit bucket:$!”;
stream_to_fh($target);
![Page 60: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/60.jpg)
IO::File
perlopentut
use IO::File;
sub stream_to_fh { ... $fh->print($hunk); ... $fh->close or die “error closing: $!”;}
open my $target, ‘>’, ‘/dev/null’ or die “can’t open bit bucket:$!”;
stream_to_fh($target);
![Page 61: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/61.jpg)
IO::File
perlopentut
use 5.14.0;
sub stream_to_fh { ... $fh->print($hunk); ... $fh->close or die “error closing: $!”;}
open my $target, ‘>’, ‘/dev/null’ or die “can’t open bit bucket:$!”;
stream_to_fh($target);
![Page 62: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/62.jpg)
IO::File
perlopentut
use 5.14.0; use autodie;
sub stream_to_fh { ... $fh->print($hunk); ... $fh->close or die “error closing: $!”;}
open my $target, ‘>’, ‘/dev/null’ or die “can’t open bit bucket:$!”;
stream_to_fh($target);
![Page 63: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/63.jpg)
package-блоки
perlfunc
package Library::Awesome;
our $VERSION = 1.234;
sub foo { ... }
1;
![Page 64: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/64.jpg)
package-блоки
perlfunc
use 5.12.0;
package Library::Awesome1.234;
sub foo { ... }
1;
![Page 65: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/65.jpg)
package-блоки
perlfunc
use 5.12.0;
package Library::Awesome1.234-alpha;
sub foo { ... }
1;
![Page 66: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/66.jpg)
package-блоки
perlfunc
use 5.12.0;
package Library::Awesome1.234 {
sub foo { ... }
}
![Page 67: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/67.jpg)
Перегрузка операций
perldoc
• перегрузка -X• перегрузка qr
• "no overloading"
• предупреждения неизвестныхперегрузок операций
![Page 68: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/68.jpg)
Другие новые фичи!
![Page 69: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/69.jpg)
«Умное» сравнениеsmrt match
![Page 70: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/70.jpg)
«Умное» сравнение
if ($x ~~ $y) {
...
}
![Page 71: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/71.jpg)
perldoc
«Умное» сравнение
![Page 72: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/72.jpg)
perldoc
• если $x и $y неизвестны, то существует 23 возможные вариации
• и некоторые из них — рекурсивные
• нет, вы не будет помнить их все
• ... и они не интуитивные
«Умное» сравнение
![Page 73: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/73.jpg)
perldoc
• если $x и $y неизвестны, то существует 23 возможные вариации
• и некоторые из них — рекурсивные
• нет, вы не будет помнить их все
• ... и они не интуитивные
«Умное» сравнение
![Page 74: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/74.jpg)
perldoc
• если $x и $y неизвестны, то существует 23 возможные вариации
• и некоторые из них — рекурсивные
• нет, вы не будет помнить их все
• ... и они не интуитивные
«Умное» сравнение
![Page 75: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/75.jpg)
perldoc
• если $x и $y неизвестны, то существует 23 возможные вариации
• и некоторые из них — рекурсивные
• нет, вы не будет помнить их все
• ... и они не интуитивные
«Умное» сравнение
![Page 76: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/76.jpg)
Сравнение
![Page 77: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/77.jpg)
Сравнение
if ($x ~~ $y) { ... }if ($str ~~ %hash) { ... }if ($str ~~ @arr) { ... }if ($str ~~ [ %h, ... ]) { ... }if (%hash ~~ %h) { ... }if (%hash ~~ @arr) { ... }if (%hash ~~ [ %h, ... ]) { ... }
![Page 78: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/78.jpg)
Сравнение
if ($x ~~ $y) { ... }if ($str ~~ %hash) { ... }if ($str ~~ @arr) { ... }if ($str ~~ [ %h, ... ]) { ... }if (%hash ~~ %h) { ... }if (%hash ~~ @arr) { ... }if (%hash ~~ [ %h, ... ]) { ... }
![Page 79: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/79.jpg)
Сравнение
if ($x ~~ $y) { ... }if ($str ~~ %hash) { ... }if ($str ~~ @arr) { ... }if ($str ~~ [ %h, ... ]) { ... }if (%hash ~~ %h) { ... }if (%hash ~~ @arr) { ... }if (%hash ~~ [ %h, ... ]) { ... }
![Page 80: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/80.jpg)
Сравнение
if ($x ~~ $y) { ... }if ($str ~~ %hash) { ... }if ($str ~~ @arr) { ... }if ($str ~~ [ %h, ... ]) { ... }if (%hash ~~ %h) { ... }if (%hash ~~ @arr) { ... }if (%hash ~~ [ %h, ... ]) { ... }
![Page 81: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/81.jpg)
Сравнение
if ($x ~~ $y) { ... }if ($str ~~ %hash) { ... }if ($str ~~ @arr) { ... }if ($str ~~ [ %h, ... ]) { ... }if (%hash ~~ %h) { ... }if (%hash ~~ @arr) { ... }if (%hash ~~ [ %h, ... ]) { ... }
![Page 82: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/82.jpg)
Сравнение
if ($x ~~ $y) { ... }if ($str ~~ %hash) { ... }if ($str ~~ @arr) { ... }if ($str ~~ [ %h, ... ]) { ... }if (%hash ~~ %h) { ... }if (%hash ~~ @arr) { ... }if (%hash ~~ [ %h, ... ]) { ... }
![Page 83: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/83.jpg)
Сравнение
if ($x ~~ $y) { ... }if ($str ~~ %hash) { ... }if ($str ~~ @arr) { ... }if ($str ~~ [ %h, ... ]) { ... }if (%hash ~~ %h) { ... }if (%hash ~~ @arr) { ... }if (%hash ~~ [ %h, ... ]) { ... }
![Page 84: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/84.jpg)
given ($x) { when ($y) { ... } when ($z) { ... }}
![Page 85: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/85.jpg)
given ($x) { when ($y) { try { ... } catch { warn “error: $_”; return undef; } }}
![Page 86: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/86.jpg)
each @array
![Page 87: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/87.jpg)
while (my ($i, $v) = each @array) {
say “$i: $v”;
}
each @array
![Page 88: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/88.jpg)
push $aref, @etc;
![Page 89: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/89.jpg)
Сейчас с меньшим количеством багов!
![Page 90: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/90.jpg)
Проблема 2038 годаy2038
![Page 91: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/91.jpg)
![Page 92: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/92.jpg)
~$ perl5.10.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038
~$ perl5.10.0 -E ‘say scalar localtime 2**31’Fri Dec 13 15:45:52 1901
![Page 93: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/93.jpg)
~$ perl5.10.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038
~$ perl5.10.0 -E ‘say scalar localtime 2**31’Fri Dec 13 15:45:52 1901
![Page 94: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/94.jpg)
~$ perl5.10.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038
~$ perl5.10.0 -E ‘say scalar localtime 2**31’Fri Dec 13 15:45:52 1901
![Page 95: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/95.jpg)
~$ perl5.10.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038
~$ perl5.10.0 -E ‘say scalar localtime 2**31’Fri Dec 13 15:45:52 1901
![Page 96: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/96.jpg)
![Page 97: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/97.jpg)
~$ perl5.12.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038
~$ perl5.12.0 -E ‘say scalar localtime 2**31’Mon Jan 18 22:14:08 2038
![Page 98: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/98.jpg)
~$ perl5.12.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038
~$ perl5.12.0 -E ‘say scalar localtime 2**31’Mon Jan 18 22:14:08 2038
![Page 99: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/99.jpg)
~$ perl5.12.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038
~$ perl5.12.0 -E ‘say scalar localtime 2**31’Mon Jan 18 22:14:08 2038
![Page 100: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/100.jpg)
~$ perl5.12.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038
~$ perl5.12.0 -E ‘say scalar localtime 2**31’Mon Jan 18 22:14:08 2038
![Page 101: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/101.jpg)
perlvar
$@
![Page 102: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/102.jpg)
Try::Tiny
$@
![Page 103: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/103.jpg)
Try::Tiny
• Ну, на самом деле, вы используете Try::Tiny, верно?
• И это тоже делает Try::Tiny более надёжным!
• Вы видите, что eval и $@ — полностью ужасны
$@
![Page 104: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/104.jpg)
Try::Tiny
• Ну, на самом деле, вы используете Try::Tiny, верно?
• И это тоже делает Try::Tiny более надёжным!
• Вы видите, что eval и $@ — полностью ужасны
$@
![Page 105: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/105.jpg)
Try::Tiny
• Ну, на самом деле, вы используете Try::Tiny, верно?
• И это тоже делает Try::Tiny более надёжным!
• Вы видите, что eval и $@ — полностью ужасны
$@
![Page 106: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/106.jpg)
use 5.12.0;{ package X; sub DESTROY { eval { } }}eval { my $x = bless {} => ‘X’; die “DEATH!!”;};warn “ERROR: $@”;
$ perl5.12.4 test.plERROR:
perlfunc
![Page 107: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/107.jpg)
use 5.12.0;{ package X; sub DESTROY { eval { } }}eval { my $x = bless {} => ‘X’; die “DEATH!!”;};warn “ERROR: $@”;
$ perl5.12.4 test.plERROR:
perlfunc
![Page 108: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/108.jpg)
use 5.14.0;{ package X; sub DESTROY { eval { } }}eval { my $x = bless {} => ‘X’; die “DEATH!!”;};warn “ERROR: $@”;
$ perl5.12.4 test.plERROR:
perlfunc
![Page 109: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/109.jpg)
use 5.14.0;{ package X; sub DESTROY { eval { } }}eval { my $x = bless {} => ‘X’; die “DEATH!!”;};warn “ERROR: $@”;
$ perl5.14.1 test.plERROR: DEATH!!
perlfunc
![Page 110: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/110.jpg)
![Page 111: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/111.jpg)
perl -le ‘print $^X’
10.0: perl10.1: perl12.0: perl14.0: perl16.0: /Users/rjbs/perl5/perlbrew/perls/16.0/bin/perl
![Page 112: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/112.jpg)
perl -le ‘print $^X’
10.0: perl10.1: perl12.0: perl14.0: perl16.0: /Users/rjbs/perl5/perlbrew/perls/16.0/bin/perl
![Page 113: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/113.jpg)
perl -le ‘print $^X’
10.0: perl10.1: perl12.0: perl14.0: perl16.0: /Users/rjbs/perl5/perlbrew/perls/16.0/bin/perl
![Page 114: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/114.jpg)
perl -le ‘print $^X’
10.0: perl10.1: perl12.0: perl14.0: perl16.0: /Users/rjbs/perl5/perlbrew/perls/16.0/bin/perl
![Page 115: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/115.jpg)
perl -le ‘print $^X’
10.0: perl10.1: perl12.0: perl14.0: perl16.0: /Users/rjbs/perl5/perlbrew/perls/16.0/bin/perl
![Page 116: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/116.jpg)
perl -le ‘print $^X’
10.0: perl10.1: perl12.0: perl14.0: perl16.0: /Users/rjbs/perl5/perlbrew/perls/16.0/bin/perl
![Page 117: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/117.jpg)
Простые строки
![Page 118: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/118.jpg)
perlunicode
Perl — хорош для Unicode
![Page 119: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/119.jpg)
perlunicode
Perl 5.16 лучше
![Page 120: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/120.jpg)
perlunicode
• поддержка Unicode 6.1
• доступно каждое свойство символа• \X в регулярных выражениях — более осмысленно
Perl 5.16 лучше
![Page 121: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/121.jpg)
perlunicode
• поддержка Unicode 6.1
• доступно каждое свойство символа• \X в регулярных выражениях — более осмысленно
Perl 5.16 лучше
![Page 122: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/122.jpg)
perlunicode
• поддержка Unicode 6.1
• доступно каждое свойство символа• \X в регулярных выражениях — более осмысленно
Perl 5.16 лучше
![Page 123: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/123.jpg)
perlunicode
«Unicode-баг»
![Page 124: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/124.jpg)
perlunicode
• строка не всегда рассматриваютсякак Unicode
• это вызывает странные ошибки, для поиска которых требуется время
• use feature ‘unicode_strings’;
•
«Unicode-баг»
![Page 125: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/125.jpg)
perlunicode
• строка не всегда рассматриваютсякак Unicode
• это вызывает странные ошибки, для поиска которых требуется время
• use feature ‘unicode_strings’;
•
«Unicode-баг»
![Page 126: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/126.jpg)
perlunicode
• строка не всегда рассматриваютсякак Unicode
• это вызывает странные ошибки, для поиска которых требуется время
• use feature ‘unicode_strings’;
• или use 5.12.0
«Unicode-баг»
![Page 127: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/127.jpg)
perlunicode
• строка не всегда рассматриваютсякак Unicode
• это вызывает странные ошибки, для поиска которых требуется время
• use feature ‘unicode_strings’;
• или use 5.12.0
«Unicode-баг»
![Page 128: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/128.jpg)
perldoc
• eval $str
• это октеты или символы?
• что будет, если это включает в себя«use utf8»
• или вы работаете под «use utf8»
Unicode eval
![Page 129: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/129.jpg)
perldoc
• evalbytes $str
• unicode_eval
Unicode eval
![Page 130: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/130.jpg)
perldiag
Мой любимый 5.12-изм?
if (length $input->{new_email}) { $user->update_email(...);}
Use of uninitialized value in lengthat - line 3120.
![Page 131: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/131.jpg)
perldiag
Мой любимый 5.12-изм?
if (length $input->{new_email}) { $user->update_email(...);}
Use of uninitialized value in lengthat - line 3120.
![Page 132: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/132.jpg)
perldiag
Мой любимый 5.12-изм?
if (length $input->{new_email}) { $user->update_email(...);}
Use of uninitialized value in lengthat - line 3120.
![Page 133: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/133.jpg)
perlre
say “I \o{23145} Perl 5.14!”;
I ♥ Perl 5.14!
![Page 134: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/134.jpg)
perlre
say “I \o{23145} Perl 5.14!”;
I ♥ Perl 5.14!
![Page 135: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/135.jpg)
perlre
say “I \23145 Perl 5.14!”;
I ?45 Perl 5.14!
![Page 136: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/136.jpg)
perlre
say “I \023145 Perl 5.14!”;
I 145 Perl 5.14!
![Page 137: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/137.jpg)
perlre
say “I \23145 Perl 5.14!”;
I ?45 Perl 5.14!
![Page 138: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/138.jpg)
perlre
qr{ (1) (2) (3) (4) \7 \10 (5) (6) (7) (8) (9) \7 \10 (10) \7 \10}x;
![Page 139: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/139.jpg)
perlre
qr{ (1) (2) (3) (4) \o{7} \o{10} (5) (6) (7) (8) (9) \o{7} \o{10} (10) \g{7} \g {10}}x;
![Page 140: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/140.jpg)
Unicode 6.1
![Page 141: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/141.jpg)
Unicode 6.1• 1F309 — мост в ночи
charnames
![Page 142: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/142.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
charnames
![Page 143: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/143.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
• 1F486 — массаж головы
charnames
![Page 144: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/144.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
• 1F486 — массаж головы
• 1F473 — мужик в тюрбане
charnames
![Page 145: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/145.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
• 1F486 — массаж головы
• 1F473 — мужик в тюрбане
• 1F423 — вылупившийся цыплёнок
charnames
![Page 146: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/146.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
• 1F486 — массаж головы
• 1F473 — мужик в тюрбане
• 1F423 — вылупившийся цыплёнок
• 1F424 — цыплёнок
charnames
![Page 147: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/147.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
• 1F486 — массаж головы
• 1F473 — мужик в тюрбане
• 1F423 — вылупившийся цыплёнок
• 1F424 — цыплёнок
• 1F425 — цыплёнок анфас
charnames
![Page 148: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/148.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
• 1F486 — массаж головы
• 1F473 — мужик в тюрбане
• 1F423 — вылупившийся цыплёнок
• 1F424 — цыплёнок
• 1F425 — цыплёнок анфас
• 1F421 — иглобрюхие
charnames
![Page 149: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/149.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
• 1F486 — массаж головы
• 1F473 — мужик в тюрбане
• 1F423 — вылупившийся цыплёнок
• 1F424 — цыплёнок
• 1F425 — цыплёнок анфас
• 1F421 — иглобрюхие
• 1F60B — облизывающийся смайл
charnames
![Page 150: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/150.jpg)
Unicode 6.1• 1F309 — мост в ночи
• 026CE — змееносец
• 1F486 — массаж головы
• 1F473 — мужик в тюрбане
• 1F423 — вылупившийся цыплёнок
• 1F424 — цыплёнок
• 1F425 — цыплёнок анфас
• 1F421 — иглобрюхие
• 1F60B — облизывающийся смайл
• 1F4A9 — куча говна charnames
![Page 151: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/151.jpg)
perldiag
\N{...}
use 5.16.0;
say "I \N{HEAVY_BLACK_HEART} Queensr" . "\N{LATIN_SMALL_LETTER_Y_WITH_DIAERESIS}"
. "che!";
![Page 152: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/152.jpg)
Преобразования регистраcase folding
![Page 153: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/153.jpg)
Case Folding
![Page 154: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/154.jpg)
Case Folding
if ( lc $foo eq lc $bar ) { ...}
![Page 155: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/155.jpg)
Case Folding
if ( fc $foo eq fc $bar ) { ...}
![Page 156: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/156.jpg)
Case Folding
![Page 157: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/157.jpg)
Case Foldinglc ‘ς‘ ➔ ‘ς‘uc ‘ς‘ ➔ ‘Σ‘fc ‘ς‘ ➔ ‘σ‘
lc ‘ß’ ➔ ‘ß’uc ‘ß’ ➔ ‘SS’fc ‘ß’ ➔ ‘ss’
![Page 158: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/158.jpg)
Case Foldinglc ‘ς‘ ➔ ‘ς‘uc ‘ς‘ ➔ ‘Σ‘fc ‘ς‘ ➔ ‘σ‘
lc ‘ß’ ➔ ‘ß’uc ‘ß’ ➔ ‘SS’fc ‘ß’ ➔ ‘ss’
![Page 159: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/159.jpg)
Case Foldinglc ‘ς‘ ➔ ‘ς‘uc ‘ς‘ ➔ ‘Σ‘fc ‘ς‘ ➔ ‘σ‘
lc ‘ß’ ➔ ‘ß’uc ‘ß’ ➔ ‘SS’fc ‘ß’ ➔ ‘ss’
![Page 160: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/160.jpg)
Case Foldinglc ‘ς‘ ➔ ‘ς‘uc ‘ς‘ ➔ ‘Σ‘fc ‘ς‘ ➔ ‘σ‘
lc ‘ß’ ➔ ‘ß’uc ‘ß’ ➔ ‘SS’fc ‘ß’ ➔ ‘ss’
![Page 161: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/161.jpg)
Case Foldinglc ‘ς‘ ➔ ‘ς‘uc ‘ς‘ ➔ ‘Σ‘fc ‘ς‘ ➔ ‘σ‘
lc ‘ß’ ➔ ‘ß’uc ‘ß’ ➔ ‘SS’fc ‘ß’ ➔ ‘ss’
![Page 162: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/162.jpg)
Case Foldinglc ‘ς‘ ➔ ‘ς‘uc ‘ς‘ ➔ ‘Σ‘fc ‘ς‘ ➔ ‘σ‘
lc ‘ß’ ➔ ‘ß’uc ‘ß’ ➔ ‘SS’fc ‘ß’ ➔ ‘ss’
![Page 163: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/163.jpg)
Case Folding
![Page 164: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/164.jpg)
Case Folding
“file under: \L$name”
“file under: \F$name”
![Page 165: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/165.jpg)
Case Folding
“file under: \L$name”
“file under: \F$name”
![Page 166: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/166.jpg)
В регулярных выражениях стали лучше
![Page 167: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/167.jpg)
именнованные сохранения
named captures
![Page 168: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/168.jpg)
Named captures
• поиск совпадений по имени, а не позиции
• избавиться от страшных $1• больше не второй Python или .Net!
perlre
![Page 169: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/169.jpg)
Named captures
• поиск совпадений по имени, а не позиции
• избавиться от страшных $1• больше не второй Python или .Net!
perlre
![Page 170: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/170.jpg)
Named captures
• поиск совпадений по имени, а не позиции
• избавиться от страшных $1• больше не второй Python или .Net!
perlre
![Page 171: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/171.jpg)
Named captures
# псевдокодsection:property = value
perlre
![Page 172: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/172.jpg)
Named captures
$line =~ /(w+):(w+) = (w+)/;
$section = $1;$name = $2;$value = $3;
perlre
![Page 173: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/173.jpg)
Named captures$line =~ / (?<section> \w+): (?<name> \w+) \s* = \s* (?<value> \w+)/x;
$section = $+{section};$name = $+{name};$value = $+{value}; perlre
![Page 174: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/174.jpg)
Новые модификаторы
my $hostname = get_hostname;$hostname =~ s/\..*//;
perlre
![Page 175: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/175.jpg)
Новые модификаторы
my $hostname = get_hostname =~ s/\..*//;
perlre
![Page 176: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/176.jpg)
Новые модификаторы
(my $hostname = get_hostname) =~ s/\..*//;
perlre
![Page 177: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/177.jpg)
Новые модификаторы
my $hostname = get_hostname =~ s/\..*//r;
perlre
![Page 178: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/178.jpg)
Новые модификаторы
my @short_names = map { s/\..*//; } @long_names;
perlre
![Page 179: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/179.jpg)
Новые модификаторы
my @short_names = map { s/\..*//; $_ } @long_names;
perlre
![Page 180: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/180.jpg)
Новые модификаторы
my @short_names = map { my $x = $_; $x =~ s/\..*//; $x } @long_names;
perlre
![Page 181: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/181.jpg)
Новые модификаторы
my @short_names = map { s/\..*//r } @long_names;
perlre
![Page 182: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/182.jpg)
Новые модификаторы
my @short_names = map s/\..*//r, @long_names;
perlre
![Page 183: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/183.jpg)
Новые модификаторы
perldoc
![Page 184: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/184.jpg)
Новые модификаторы
perldoc
/u /a /aa /d /l
"൮" =~ /\d/
"ð" =~ /\w/
"ff" =~ /ff/i
"ff" =~ /pL/i
✓ ☐ ☐ ¿? ¿?
✓ ☐ ☐ ¿? ¿?
✓ ✓ ☐ ¿? ¿?
✓ ✓ ✓ ¿? ¿?
![Page 185: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/185.jpg)
Новые модификаторы
perldoc
/u /a /aa /d /l
"൮" =~ /\d/
"ð" =~ /\w/
"ff" =~ /ff/i
"ff" =~ /pL/i
✓ ☐ ☐ ¿? ¿?
✓ ☐ ☐ ¿? ¿?
✓ ✓ ☐ ¿? ¿?
✓ ✓ ✓ ¿? ¿?
![Page 186: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/186.jpg)
Новые модификаторы
perldoc
/u /a /aa /d /l
"൮" =~ /\d/
"ð" =~ /\w/
"ff" =~ /ff/i
"ff" =~ /pL/i
✓ ☐ ☐ ¿? ¿?
✓ ☐ ☐ ¿? ¿?
✓ ✓ ☐ ¿? ¿?
✓ ✓ ✓ ¿? ¿?
![Page 187: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/187.jpg)
Новые модификаторы
perldoc
/u /a /aa /d /l
"൮" =~ /\d/
"ð" =~ /\w/
"ff" =~ /ff/i
"ff" =~ /pL/i
✓ ☐ ☐ ¿? ¿?
✓ ☐ ☐ ¿? ¿?
✓ ✓ ☐ ¿? ¿?
✓ ✓ ✓ ¿? ¿?
![Page 188: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/188.jpg)
Новые модификаторы
perldoc
/u /a /aa /d /l
"൮" =~ /\d/
"ð" =~ /\w/
"ff" =~ /ff/i
"ff" =~ /pL/i
✓ ☐ ☐ ¿? ¿?
✓ ☐ ☐ ¿? ¿?
✓ ✓ ☐ ¿? ¿?
✓ ✓ ✓ ¿? ¿?
![Page 189: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/189.jpg)
Новые модификаторы
perldoc
/u /a /aa /d /l
"൮" =~ /\d/
"ð" =~ /\w/
"ff" =~ /ff/i
"ff" =~ /pL/i
✓ ☐ ☐ ¿? ¿?
✓ ☐ ☐ ¿? ¿?
✓ ✓ ☐ ¿? ¿?
✓ ✓ ✓ ¿? ¿?
![Page 190: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/190.jpg)
Новые модификаторы
perlre
# Только ASCII-символы:die “Забавные неамериканские символы” if $str =~ /\P{ASCII}/;$str =~ /...регулярное выражение.../;
![Page 191: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/191.jpg)
study
perldoc
![Page 192: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/192.jpg)
study
perldoc
my $re = qr{...выражение...};my $str = q{...long complex...};
$str =~ $re; # slow!!study $str; # does stuff$str =~ $re; # fast!!
![Page 193: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/193.jpg)
study
perldoc
my $re = qr{...выражение...};my $str = q{...длинная строка...};
$str =~ $re; # slow!!study $str; # does stuff$str =~ $re; # fast!!
![Page 194: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/194.jpg)
study
perldoc
my $re = qr{...выражение...};my $str = q{...длинная строка...};
$str =~ $re; # медленно!!study $str; # does stuff$str =~ $re; # fast!!
![Page 195: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/195.jpg)
study
perldoc
my $re = qr{...выражение...};my $str = q{...длинная строка...};
$str =~ $re; # медленно!!study $str; # используем$str =~ $re; # fast!!
![Page 196: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/196.jpg)
study
perldoc
my $re = qr{...выражение...};my $str = q{...длинная строка...};
$str =~ $re; # медленно!!study $str; # используем$str =~ $re; # быстро!!
![Page 197: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/197.jpg)
study
perldoc
my $re = qr{...выражение...};my $str = q{...длинная строка...};
$str =~ $re; # медленно, но верно!!study $str; # используем$str =~ $re; # кто знает!!
![Page 198: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/198.jpg)
study
perldoc
my $re = qr{...выражение...};my $str = q{...длинная строка...};
$str =~ $re; # медленно, но верно!!study $str; # используем$str =~ $re; # медленно, но верно!!
![Page 199: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/199.jpg)
Замена модулейModder Modlib
![Page 200: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/200.jpg)
Недавно появившиеся библиотеки в ядре
• JSON
• HTTP::Tiny
• Module::Metadata
• CPAN::Meta
perlmodlib
![Page 201: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/201.jpg)
Недавно удалённые библиотеки
• Devel::DProf
• Switch
• perl4 ядро
• ...и другие
perlmodlib
![Page 202: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/202.jpg)
Удалёнстарый функционал
![Page 203: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/203.jpg)
qw()
perlop
for my $show qw(Smallville Lost V) { $tivo->cancel_pass( $show );}
![Page 204: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/204.jpg)
qw()
perlop
for my $show (qw(Smallville Lost V)) { $tivo->cancel_pass( $show );}
![Page 205: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/205.jpg)
$[
![Page 206: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/206.jpg)
$[ — индекс первого элемента в массиве
• можно сделать так, чтобы $array[1] возвращал первый элемент массива
• разве это не круто?
• это так же круто, как и шрифт Comic Sans
perlvar
![Page 207: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/207.jpg)
$[ — индекс первого элемента в массиве
• можно сделать так, чтобы $array[1] возвращал первый элемент массива
• разве это не круто?
• это так же круто, как и шрифт Comic Sans
perlvar
![Page 208: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/208.jpg)
$[ — индекс первого элемента в массиве
• можно сделать так, чтобы $array[1] возвращал первый элемент массива
• разве это не круто?
• это так же круто, как и шрифт Comic Sans
perlvar
![Page 209: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/209.jpg)
$[ — индекс первого элемента в массиве
• можно сделать так, чтобы $array[1] возвращал первый элемент массива
• разве это не круто?
• это так же круто, как и шрифт Comic Sans
perlvar
![Page 210: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/210.jpg)
$[
perlvar
$[ = 1;
for (1 .. $#array) { ...}
![Page 211: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/211.jpg)
$[
perlvar
for ($[ .. $#array) { ...}
![Page 212: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/212.jpg)
$[
perlvar
Переназначена переменная $[.Вы идиот или типа того? at -e line 123.
![Page 213: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/213.jpg)
$[
perlvar
Use of assignment to $[ is deprecatedat -e line 123.
![Page 214: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/214.jpg)
defined @arr
![Page 215: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/215.jpg)
Вопросы?
![Page 216: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/216.jpg)
Спасибо за внимание!
![Page 217: Что нового в Perl? 5.10 — 5.16](https://reader033.vdocuments.mx/reader033/viewer/2022042521/55795a05d8b42ab6648b4d6d/html5/thumbnails/217.jpg)
Оригинал«What's New in Perl?
v5.10 – v5.16»http://www.slideshare.net/rjbs/whats-new-in-perl-v510-v516