in reply to WWW::Mechanize link array de-dup

You're trying to use a list of WWW::Mechanize::Link instances as hash keys but they're not getting stringified into something sane (rather you're getting the normal default Perl reference stringification). You're going to need to do your uniqufication differently.

my %seen; my @uniq_urls = grep !($seen{ $_->url }++), @link;

The cake is a lie.
The cake is a lie.
The cake is a lie.

Replies are listed 'Best First'.
Re^2: WWW::Mechanize link array de-dup
by Your Mother (Archbishop) on May 06, 2008 at 23:42 UTC

    I also recommend using a different link object method, url_abs, or else you might get relative:absolute duplicates. You'll also get what you expect instead of lots of apparently fragmentary URIs.

    my @uniq_urls = grep !($seen{ $_->url_abs }++), @link;

      Presuming he uses the W::M::Link instances then his $mech->get( $foo ) calls should Do The Right Thing™ for relative URLs, but yup very good point about absolutifying before comparing (and the URI::URL instances url_abs returns stringifies sanely when you use it as a hash key, so if you're not going to subsequently pass them on to a get call you could use a variation of your (the OP's)original code: my %seen; @seen{ map $_->uri_abs, @links ) = ();my @out = keys %seen;).

      The cake is a lie.
      The cake is a lie.
      The cake is a lie.

        Thanks Guys
        Used the hash keys as unique and works fine
        Cheers