17
Особенности и головоломки Perl Павел Власов 1 Особенности и головоломки Perl Павел Власов, 2011 Perl workshop Санкт-Петербург

Present saint-per3-by-pavel-vlasov

Embed Size (px)

Citation preview

Page 1: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 1

Особенности и головоломки Perl

Павел Власов, 2011

Perl workshop Санкт-Петербург

Page 2: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 2

Содержание

1. Хитрости

2. Головоломки

3. Новые возможности Perl

Page 3: Present saint-per3-by-pavel-vlasov

Особенности и головоломки 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;

Page 4: Present saint-per3-by-pavel-vlasov

Особенности и головоломки 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}$"

Page 5: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 5

2. Cила sitecustomize.pl

• Влияет на все выполняемые сценарии Perl

• Параметр: $Config{usesitecustomize}

• Путь: $Config{sitelib}/sitecustomize.pl

• Отключение данной опции $ perl -f

• $perldoc perlrun

Page 6: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 6

3. Может партию в козла =()=

• Оператор похожий на голову козла

my $items = ( my @date = localtime );

my $items =()= localtime;

my $count =()= split /:/, $line;

Page 7: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 7

4. Последнее выполненное выражение

say check(4);

say check(3);

sub check {

my $num = shift;

unless ($num % 2) {

return 'OK';

}

}

Page 8: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 8

5. @_ внутри и вне функции

my @array = (1, 2, 3);

change_array(@array);

say " After: @array";

sub change_array {

push @_, 4;

say "Inside: @_";

}

Page 9: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 9

6. Оператор диапазона

my $number = (1 .. 4);

say $number;

.. – Оператор диапазона в скалярном контексте

$ perldoc perlop

Page 10: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 10

6. Оператор диапазона

• Используем для чтения файлов (flip flop)

while(<$file>) {

chomp;

if (/START/ .. /END/) {

say $_;

}

}

Page 11: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 11

7. Хэши и оператор (smartmatching)

my %hash1 = (one => 1, two => 2);

my %hash2 = (one => 1, two => 3);

say ‘верно!’ if %hash1 ~~ %hash2;

Page 12: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 12

8. Модуль Data::Printer

• use Data::Printer

• легко использовать p($object)

• подсветка структуры

• настройка фильтров

Page 13: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 13

8. Модуль Data::Printer пример

Page 14: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 14

9. Удобный модуль local::lib

• Управление модулями без привилегий root

• Устанавливаем local::lib

$perl -Mlocal::lib -MCPAN -eshell

$perl -Mlocal::lib your_script.pl

Page 15: Present saint-per3-by-pavel-vlasov

Особенности и головоломки 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

Page 16: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 16

Использованные ресурсы

• www.effectiveperlprogramming.com

• www.perl-buzz.org

• www.perlhacks.org

• www.perlbrew.pl

• www.modernperlbooks.com

Page 17: Present saint-per3-by-pavel-vlasov

Особенности и головоломки Perl Павел Власов 17

Спасибо за внимание!

[email protected]