- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
День добрый,
Выдает "ok". Т.е на сколько я понимаю точка в переменной $b трактуется как любой символ или что-то в этом роде, каким образом провести аналогичное сравнение только что бы точка воспринималась как точка, при этом сравнение происходить должно по шаблону /(.+)!$b!(.+)/
Я не супер программист на perl но надо решить этот ребус как-то...
На самом деле оригинальная конструкция выглядит так:
Т.е циклом из файла читаются строки и если совпадает $username происходит действие, однако начинают совпадать имена типа "vasya" и "v.sya", а оба являются реальными, надо что бы они различались...
Если делать просто if ($a eq $b) { ... } то все нормально , но как "eq" прикрутить к шаблону /(.+)!$b|(.+)/ не пойму :(
Заранее спасибо.
попробуй обрамить переменную \Q и \E:
if ($a =~ /(.+)!\Q$b\E!(.+)/) { print "ok\n"; }
iHead, вроде бы стработало, где почитать что дает \Q \E ?
http://www.perlmonks.org/bare/?node_id=468053
iHead, вроде бы стработало, где почитать что дает \Q \E ?
это эквивалент quotemeta
Выдает "ok". Т.е на сколько я понимаю точка в переменной $b трактуется как любой символ или что-то в этом роде
Да, как любой символ. В вашем примере достаточно было вместо
написать
(одинарные кавычки обязательны)bbon, Спасибо, но не совсем так, я написал выше, что оригинальное сравнение происходит по файлу который читается:
По этому $username изначально не известен.... он приходит в переменную, по этому как туда применить экранирование - не ясно :(
А данную конструкцию я просто привел для примера, что бы проверить....
Представьте что перед while() например стоит $username = $ARGV[0];
bbon, Спасибо, но не совсем так, я написал выше, что оригинальное сравнение происходит по файлу который читается:
По этому $username изначально не известен.... он приходит в переменную, по этому как туда применить экранирование - не ясно :(
А данную конструкцию я просто привел для примера, что бы проверить....
Представьте что перед while() например стоит $username = $ARGV[0];
Ну, тогда, самое простое, как вам написали выше - использовать \Q (запрет на метасимволы), я не знаю всей задачи, но мне кажется, что (.+) - лишнее, иначе не отловит имя пользователя в начале-конце строки, примерно так
я не знаю всей задачи, но мне кажется, что (.+) - лишнее, иначе не отловит имя пользователя в начале-конце строки, примерно так
Совершенно верно, его там быть и не должно (имя пользователя в начале строки) файл подается в строгом формате xxx!$username!xxx это уже вторичная обработка данных так сказать, сначала создается тот самый файл... Ну в общем это уже не важно, всем спасибо за пояснения и участие!!!