When added to a regex, the x modifier tells the regex engine to ignore whitespace — that is, to omit the spaces, etc., in the regex from the pattern to be matched. So, if you are trying to match something like:
<td class="countryValue">
# ^ note the space
and your regex has an x modifier, you must specify the space(s) to be matched explicitly. For example:
<td \s+ class="countryValue">
That said, when I run your code with this fix applied:
while ($content =~ m!
tr \s+ class="bgrow1">
<td>
(.*?)
+ # $1
</td>
<td \s+ class="countryValue">
(.*?)
+ # $2 country
</td>
<td \s+ class="destnameValue">
(.*?)
+ # $3 destination
</td>
<td \s+ class="hotelNameValue">
(.*?)
+ # $4
</td>
<td \s+ class="durationValue">
(.*?)
+ # $5 trip_length
</td>
<td \s+ align="RIGHT" \s+ class="priceValue">
<a \s+ target="_blank" \s+ href="(.*?)">
+ # $6 url
(.*?)
+ # $7
</a>
</td>
!gisxm)
the regex still gets no matches, so there is more wrong than just the missing whitespace. (Or, there is more whitespace lurking in the target webpages than I have allowed for.) For further help from the monks, please follow the advice given above by davido, and reduce your problem to a minimal code snippet demonstrating the problem and complete with representative data.
BTW, the variable $airport is accessed in the final print statement, but never initialized. You would have seen this if you had begun the script with
use strict;
use warnings;
as Gangabass advised in Re: How to scraper ASP websites.
Athanasius <°(((>< contra mundum
|