Sunday, November 27, 2011

Презентация хитрости Perl от Brian d Foy

В начале ноября прошел YAPC::Brasil 2011.
 
Несколько презентаций уже доступны, одна их которых принадлежит Brian d Foy (My Perl bag of Tricks). 


Вот несколько хитростей Perl представленных в этом докладе.

1) Используем open не только для открытия файлов.

Открывать с помощью open можно не только файлы, а также переменные содержащие информацию.

my $string = "1\n2\n";
open my $fh, '<', \$string; 

2) Работа с большим количеством файлов 

Работа с массивом файлов, даже в случае если один из файлов не откроется, скрипт продолжит работу. 

foreach my $file ( @files ) {
    open my($fh), '>', $file or do {
        warn "... $!\n";
        next FILE;
   }
}

3) Работаем с данными в исходнике после __END__.

По умолчанию глобальная переменная $/ установлен перенос строки, то есть работа с хэндлером файла ведется построчно. Мы хотим за раз прочитать содержимое , поэтому мы сбрасываем этот параметер.

my $data = do {
     local $/; ;
};
...

__END__

....

4) Современная проверка с помощью ref

Автор приводит свою технику проверки ссылки с помощью ref,
Лучше использовать прототипы ссылок, так как 'ARRAY' будет захардкожен, то можно неправильно его написать.

if ( ref $r eq 'ARRAY' ) - устаревшая техника

if ( ref $r eq ref [] )
if ( ref $r eq ref {} )
if ( ref $r eq ref sub{} )
if ( ref $r eq ref qr// )

5) joinим все подряд

Еще интересное применение оператора join
 
my $string = join "\n", @entries; - последняя строка не будет содержать переноса, немного неудобно.
$string .= '\n';

print join "\n", @entries, ''; - а этот вариант позволит справится нам с последней строкой.


6) Переменные по умолчанию.

Этот способ задания переменных по умолчанию, мне очень нравится.
action( name => 'mike');

sub action {
     my %defaults = (...);
     my %config = (%defaults, @_);
...;

}

Я привел несколько трюков Perl из презентации, с оригиналом можно ознакомиться по ссылке в начале страницы.

No comments:

Post a Comment