В начале ноября прошел 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 $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 из презентации, с оригиналом можно ознакомиться по ссылке в начале страницы.
$string .= '\n';
print join "\n", @entries, ''; - а этот вариант позволит справится нам с последней строкой.
6) Переменные по умолчанию.
Этот способ задания переменных по умолчанию, мне очень нравится.
action( name => 'mike');
sub action {
my %defaults = (...);
my %config = (%defaults, @_);
...;
}
Я привел несколько трюков Perl из презентации, с оригиналом можно ознакомиться по ссылке в начале страницы.
No comments:
Post a Comment