POD2-RU

 view release on metacpan or  search on metacpan

lib/POD2/RU/perlrequick.pod  view on Meta::CPAN

    $x = "I batted 4 for 4";
    $x =~ s/4/four/;   # $x содержит "I batted four for 4"
    $x = "I batted 4 for 4";
    $x =~ s/4/four/g;  # $x содержит "I batted four for four"

Неразрушающий модификатор  C<s///r> делает так, что результаты подстановки 
должны быть возвращены, переменная C<$_> не изменяется (или любая другая переменная
с которой заменитель связан с помощью C<=~>):

    $x = "I like dogs.";
    $y = $x =~ s/dogs/cats/r;
    print "$x $y\n"; # напечатает "I like dogs. I like cats."

    $x = "Cats are great.";
    print $x =~ s/Cats/Dogs/r =~ s/Dogs/Frogs/r =~ s/Frogs/Hedgehogs/r, "\n";
    # напечатает "Hedgehogs are great."

    @foo = map { s/[a-z]/X/r } qw(a b c 1 2 3);
    # @foo сейчас qw(X X X 1 2 3)

Модификатор выполнения C<s///e> обертывает C<eval{...}> вокруг 
заменяемой строки и результат вычисления заменяется на найденную строку.
Некоторые примеры:

    # переворачивает все слова в строке
    $x = "the cat in the hat";
    $x =~ s/(\w+)/reverse $1/ge;   # $x содержит "eht tac ni eht tah"

    # конвертирует проценты в десятичный формат
    $x = "A 39% hit rate";
    $x =~ s!(\d+)%!$1/100!e;       # $x содержит "A 0.39 hit rate"

Последний пример показывает, что C<s///> может использовать и другие разделители, такие как
C<s!!!> и C<s{}{}>, и даже C<s{}//>. Если используются одинарные кавычки C<s'''>, то регекс
и заменяемое выражение рассматриваются как строки в одинарных кавычках.

=head2 Оператор разделения

C<split /регекс/, строка> расделяет C<строку> в список подстрок 
и возвращает этот список. Регекс определяет последовательность символов 
, которые разделяют C<строку>. Например, чтобы разделить 
строку на слова, нужно

    $x = "Calvin and Hobbes";
    @word = split /\s+/, $x;  # $word[0] = 'Calvin'
                              # $word[1] = 'and'
                              # $word[2] = 'Hobbes'

Чтобы извлечь список номеров,разделенных запятыми, нужно

    $x = "1.618,2.718,   3.142";
    @const = split /,\s*/, $x;  # $const[0] = '1.618'
                                # $const[1] = '2.718'
                                # $const[2] = '3.142'

Если используется пустой регекс C<//>, строка разбивается на отдельные 
символы. Если регекс имеет группировки, то результирующий список содержит также
совпавшие подстроки из группировок:

    $x = "/usr/bin";
    @parts = split m!(/)!, $x;  # $parts[0] = ''
                                # $parts[1] = '/'
                                # $parts[2] = 'usr'
                                # $parts[3] = '/'
                                # $parts[4] = 'bin'

Поскольку первому символу $x соответствует регекс, то C<split> создает 
пустой начальный элемент в списке.

=head1 ОШИБКИ

Нет.

=head1 СМОТРИТЕ ТАКЖЕ

Это всего лишь краткое руководство. Для более глубокого изучения регулярных выражений, 
см L<perlretut> ,а для справочной страницы см L<perlre>.

=head1 АВТОР И АВТОРСКОЕ ПРАВО

Copyright (c) 2000 Mark Kvale
Все права защищены.

Этот документ может распространяться на тех же условиях, что и Perl.

=head2 Благодарности

Автор хотел бы поблагодарить Марка-Джейсона Доминуса, Том Кристиансена, 
Илью Захаревича, Брэда Хьюза, и Майка Жиру за все их полезные 
комментарии.

=head1 ПЕРЕВОДЧИКИ
 
=over
 
=item * Николай Мишин C<< <mishin@cpan.org> >>
 
=back



( run in 1.015 second using v1.01-cache-2.11-cpan-71847e10f99 )