Это странная проблема, с которой я столкнулся (и, вероятно, видел ее раньше, но никогда не обращал на нее внимания).
Вот суть кода:
my $url = 'http://twitter.com/' . $handle;
my $page = get($url);
if($page =~ m/Web<\/span>\s*<a href=\"(.+?)\"/gi) {
$website = $1;
}
if($page =~ m/follower_count\" class=\"stats_count numeric\">(.+?)\s*</g) {
$num_followers = $1;
}
Он получает URL-адрес в твиттере и делает регулярные выражения, чтобы захватить количество подписчиков и веб-сайт пользователя. Этот код на самом деле работает нормально. Но когда вы переключаете заказ и ищете веб-сайт ПОСЛЕ того, как вы ищете подписчика, веб-сайт становится пустым. Как выясняется, когда вы проверяете строку, кажется, что она сохраняет местоположение того места, где было найдено последнее совпадение. В html число фолловеров появляется после отображения веб-сайта. Если вы сначала выполняете регулярное выражение для количества подписчиков, это похоже на запуск регулярного выражения веб-сайта, на котором счетчик подписчиков прекращается (как индексная ссылка на строку).
Что меня озадачило, так это то, что в конце у меня есть оператор «g», означающий «глобальный», как в «искать строку глобально ... с начала».
Я что-то здесь упускаю? Я не могу понять, почему она возобновляет последнюю позицию регулярного выражения в строке (если это имеет смысл).