in reply to Avoid "duplicate" fetching with LWP

I would do just what you propose - split on the '#' and fetch everything to the left. That is, split on the '#' receiving into a list, and then fetch on the 1st element of the list, like:
for $link (@links) { @link_tokens = split("#", $link); push(@pri, $link_tokens[0]); }
that should handle those rare cases where someone puts a '#' sign in the query string - I think(?) you only care about the part of the link before the 1st '#' sign, right?

HTH.