Forum Webscript.Ru
Программирование => Perl => Тема начата: FANTAzeRus от 21 Ноября 2003, 09:58:43
-
my @cs = ("A".."Z","a".."z",0..9);
my $text = join("",@cs[map { rand @cs } (1..9)]);
В результате получим случайную последовательность из 9 символов. Как вставить между этими символами произвольный разделитель, через n символов???
-
my $n = 3;
my $chr = \'A\';
$text =~ s/^(.{\\Q$n\\E})(.*)$/$1$chr$2/;
-
Прошу прощения, я хотел сказать через КАЖДЫЕ n символов!
-
my $n = 3;
my $chr = \'-\';
$text = join $chr, $text =~ /(.{1,\\Q$n\\E})/g;
-
Спасибо!
-
2ondr
Не понял смысла {\\Q$n\\E}
Что значат \\Q и \\E вообще? (не понимаю, что значит "цитировать (де-мета) символы до \\E" - так написано в "программировании на perl")
И что значат в они же в квантификаторах?
Чтобы вставлять через каждые n символов, можно изменить вариант ondr-а так:
my $n = 3;
my $chr = \'A\';
$text =~ s/\\G(.{$n})/$1$chr/g;
-
perldoc perlfaq6
perldoc perlre
-
2NeoNox
Въехал. \\Q действует как \\ только сразу на много символов?
Но если так, зачем эскейпить $ в квантификаторе? Разве может $ встречаться как метасимвол в квантификаторах типа {m, n}?