Upload
pavel-vlasov
View
656
Download
0
Embed Size (px)
Citation preview
Особенности и головоломки Perl Павел Власов 1
Особенности и головоломки Perl
Павел Власов, 2011
Perl workshop Санкт-Петербург
Особенности и головоломки Perl Павел Власов 2
Содержание
1. Хитрости
2. Головоломки
3. Новые возможности Perl
Особенности и головоломки Perl Павел Власов 3
1. Отладка регулярных выражений
• use re ‘debug’
• perldoc re
• Если Perl скомпилирован с -DDEBUGGING
используйте $ perl -Dr
my $regexp = qr/[ab]cd*e{2,3}$/;
my $text = ‘bcdee’;
$text =~ $regexp;
Особенности и головоломки Perl Павел Власов 4
1. Отладка регулярных выражений
Во время выполнения (run time)
STRING-OFFSET <PRE-STRING> <POST-STRING> |ID: TYPE
Matching REx "[ab]cd*e{2,3}$" against "bcdee"0 <> <bcdee> | 1:ANYOF[ab][](12)
1 <b> <cdee> | 12:EXACT <c>(14)
2 <bc> <dee> | 14:STAR(17)
EXACT <d> can match 1 times out of 2147483647...
3 <bcd> <ee> | 17: CURLY {2,3}(21)
EXACT <e> can match 2 times out of 3...
5 <bcdee> <> | 21: EOL(22)
5 <bcdee> <> | 22: END(0)
Match successful!
Freeing REx: "[ab]cd*e{2,3}$"
Особенности и головоломки Perl Павел Власов 5
2. Cила sitecustomize.pl
• Влияет на все выполняемые сценарии Perl
• Параметр: $Config{usesitecustomize}
• Путь: $Config{sitelib}/sitecustomize.pl
• Отключение данной опции $ perl -f
• $perldoc perlrun
Особенности и головоломки Perl Павел Власов 6
3. Может партию в козла =()=
• Оператор похожий на голову козла
my $items = ( my @date = localtime );
my $items =()= localtime;
my $count =()= split /:/, $line;
Особенности и головоломки Perl Павел Власов 7
4. Последнее выполненное выражение
say check(4);
say check(3);
sub check {
my $num = shift;
unless ($num % 2) {
return 'OK';
}
}
Особенности и головоломки Perl Павел Власов 8
5. @_ внутри и вне функции
my @array = (1, 2, 3);
change_array(@array);
say " After: @array";
sub change_array {
push @_, 4;
say "Inside: @_";
}
Особенности и головоломки Perl Павел Власов 9
6. Оператор диапазона
my $number = (1 .. 4);
say $number;
.. – Оператор диапазона в скалярном контексте
$ perldoc perlop
Особенности и головоломки Perl Павел Власов 10
6. Оператор диапазона
• Используем для чтения файлов (flip flop)
while(<$file>) {
chomp;
if (/START/ .. /END/) {
say $_;
}
}
Особенности и головоломки Perl Павел Власов 11
7. Хэши и оператор (smartmatching)
my %hash1 = (one => 1, two => 2);
my %hash2 = (one => 1, two => 3);
say ‘верно!’ if %hash1 ~~ %hash2;
Особенности и головоломки Perl Павел Власов 12
8. Модуль Data::Printer
• use Data::Printer
• легко использовать p($object)
• подсветка структуры
• настройка фильтров
Особенности и головоломки Perl Павел Власов 13
8. Модуль Data::Printer пример
Особенности и головоломки Perl Павел Власов 14
9. Удобный модуль local::lib
• Управление модулями без привилегий root
• Устанавливаем local::lib
$perl -Mlocal::lib -MCPAN -eshell
$perl -Mlocal::lib your_script.pl
Особенности и головоломки Perl Павел Власов 15
10. perlbrew
� Не нужно привилегий sudo
� Использование различных версий Perl
� Легкое переключение между версиями
$ perbrew install perl-5.14.2
$ perbrew switch perl-5.14.2
$ perlbrew exec myprogram.pl
www.perlbrew.pl
Особенности и головоломки Perl Павел Власов 16
Использованные ресурсы
• www.effectiveperlprogramming.com
• www.perl-buzz.org
• www.perlhacks.org
• www.perlbrew.pl
• www.modernperlbooks.com