Автор Тема: Perl vs Текст  (Прочитано 3843 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FANTAzeRus

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 93
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Текст
« : 21 Ноября 2003, 09:58:43 »
my @cs = ("A".."Z","a".."z",0..9);
my $text = join("",@cs[map { rand @cs } (1..9)]);

В результате получим случайную последовательность из 9 символов. Как вставить между этими символами произвольный разделитель, через n символов???

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Текст
« Ответ #1 : 21 Ноября 2003, 10:38:19 »
my $n = 3;
my $chr = \'A\';
$text =~ s/^(.{\\Q$n\\E})(.*)$/$1$chr$2/;
0 OK, 0:1

Оффлайн FANTAzeRus

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 93
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Текст
« Ответ #2 : 21 Ноября 2003, 10:52:08 »
Прошу прощения, я хотел сказать через КАЖДЫЕ n символов!

Оффлайн ondr

  • Модератор
  • Глобальный модератор
  • Старожил
  • *****
  • Сообщений: 440
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Текст
« Ответ #3 : 21 Ноября 2003, 11:03:51 »
my $n = 3;
my $chr = \'-\';
$text = join $chr, $text =~ /(.{1,\\Q$n\\E})/g;
0 OK, 0:1

Оффлайн FANTAzeRus

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 93
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Текст
« Ответ #4 : 21 Ноября 2003, 11:08:41 »
Спасибо!

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Perl vs Текст
« Ответ #5 : 21 Ноября 2003, 11:10:34 »
2ondr
Не понял смысла {\\Q$n\\E}
Что значат \\Q и \\E вообще? (не понимаю, что значит "цитировать (де-мета) символы до \\E" - так написано в "программировании на perl")
И что значат в они же в квантификаторах?


Чтобы вставлять через каждые n символов, можно изменить вариант ondr-а так:

my $n = 3;
my $chr = \'A\';
$text =~ s/\\G(.{$n})/$1$chr/g;
 BlueJacking среди нас

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Perl vs Текст
« Ответ #6 : 21 Ноября 2003, 11:33:57 »
perldoc perlfaq6
perldoc perlre
The documentations is your friend

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
Perl vs Текст
« Ответ #7 : 22 Ноября 2003, 12:22:58 »
2NeoNox
Въехал. \\Q действует как \\ только сразу на много символов?
Но если так, зачем эскейпить $ в квантификаторе? Разве может $ встречаться как метасимвол в квантификаторах типа {m, n}?
 BlueJacking среди нас

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28