Каждое совпадение / g начинается с того места, где было прервано предыдущее, но поскольку вы используете утверждения нулевой ширины, вы фактически не потребляете ". Так что
">Andaman & Nicobar</option>
<option value="
тоже считается совпадением.
Do:
my @cities = $firstpage =~ m/"([^"]*)"/gs;
вместо этого. Обратите внимание, что если есть круглые скобки, m // g в случае успеха возвращает их содержимое в контексте списка.