Автор Гілка: Perl tips  (Прочитано 3538 раз)

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Perl tips
« : 2007-12-16 07:14:11 »
1. Як би дивно воно не виглядало, це працює:

my $aa = "qw123iop";
substr ($aa, 2, 3) = "ertyu";

Михайло Даниленко

  • Гість
Re: Perl tips
« Відповідей #1 : 2008-01-13 16:54:04 »
2. Не забувайте не використовувати $&, $` та $'.

Михайло Даниленко

  • Гість
Re: Perl tips
« Відповідей #2 : 2008-05-26 14:57:26 »
Можливо це не дуже потрібна функція, але іноді може дещо спростити код

my $aa = "a";
$aa++;
print "'$aa'\n";
#'b'
$aa = "z9";
$aa++;
print "'$aa'\n";
#'aa0'

Щоправда, -- у п'ятому перлі так не працює :(

Відсутній Михайло Даниленко

  • Адміністратор ЩОДО
  • Літератор
  • *****
  • дописів: 1262
  • Карма: +0/-0
  • [Debian Stretch]
Re: Perl tips
« Відповідей #3 : 2011-12-24 07:12:34 »
Надибав на look-behind довільної довжини:

# Розбиває рядок на слова, дозволяючи включати пробіли за допомогою \
s/^\s+//o;
my @a = split /(?:^|[^\\])(?:\\\\)*\K\s+/o, $_;
    @a = map { s/\\(.)/$1/go; $_ } @a;


Є (?<=expr), але воно працює лише якщо expr має фіксовану довжину. Натомість \K вказує перлу продовжувати перевірку виразу, але не включати того, що вже перевірено до кінцевого результату ($&).
« Змінено: 2011-12-24 07:22:45 від ISBear »