Отправка для FTP - каков веб-сайт Копии должен был быть.
Это просто вышло, но мне нравится он много: Файловый менеджер Mindscape
VisualSVN превосходен для интеграции SVN. Намного лучше, чем Анк (не попробовали Анк 2 + хотя)
SonicFileFinder для поиска файлов или классов быстро. Поддержки, ищущие просто прописные части имени типа в корпусе верблюдом
веб-Проекты Развертывания Microsoft для предварительной компиляции проектов веб-сайта
Это помещает само регулярное выражение в скалярный контекст, а это не то, что вам нужно. Вместо этого поместите регулярное выражение в контекст списка (чтобы получить количество совпадений) и поместите , что в скалярный контекст.
my $number = () = $string =~ /\./gi;
Я думаю, что самый ясный способ описать это - избежать мгновенного преобразования в скаляр. Сначала назначьте массив, а затем используйте этот массив в скалярном контексте. По сути, это то, что будет делать идиома = () =
, но без (редко используемой) идиомы:
my $string = "one.two.three.four";
my @count = $string =~ /\./g;
print scalar @count;
Также см. Perlfaq4 :
Есть несколько способов с различной эффективностью. $ count = ($ string = ~ tr / X //); print "В строке $ count X символов";
Это нормально, если вы просто ищете одного персонажа. Однако, если вы пытаетесь подсчитать несколько символьных подстрок в более крупной строке, tr /// работать не будет. Что вы можете сделать, так это обернуть цикл while () вокруг совпадения глобального шаблона. Например, посчитаем отрицательные целые числа:
$ string = "-9 55 48 -2 23 -76 4 14 -44"; while ($ string = ~ / - \ d + / g) {$ count ++} print "В строке $ count отрицательных чисел";
Другая версия использует глобальное совпадение в контексте списка, затем присваивает результат скаляру, производя подсчет количества совпадений.
$ count = () = $ string = ~ / - \ d + / g;
Попробуйте следующее:
my $string = "one.two.three.four";
my ($number) = scalar( @{[ $string=~/\./gi ]} );
Он вернет 3
для мне. При создании ссылки на массив регулярное выражение оценивается в контексте списка, и @ {..}
отменяет ссылку на ссылку на массив.
Является ли следующий код однострочным?
print $string =~ s/\./\./g;
другой способ,
my $string = "one.two.three.four";
@s = split /\./,$string;
print scalar @s - 1;