Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Dear Monks

I have URLs like the following one

http://www.bing.com/cr?IG=E1B087FDC4A64C13B6B6F56EE3AA3510&CID=04F7052 +A8A496C5127170CFC8BAE6DD4&rd=1&h=mRcJ09asL7Bb7lrqFpfdvPQYVwtg1d5J6vMW +CRwXbAk&v=1&r=http%3a%2f%2fwww.raiscuola.rai.it%2farticoli%2fstato-de +lla-ricerca-scientifica-in-italia%2f19049%2fdefault.aspx&p=DevEx,5328 +.1

This, lets face it, looks pretty bad. What I want to do is to "clean" it. By cleaning I mean getting the final URL which is contained in the long one. In our case

"http://www.raiscuola.rai.it/articoli/stato-della-ricerca-scientifica- +in-italia/19049/default.aspx"

I am not an expert in URL, URI and the likes but if I put the long URL in any Browser (tried Firefox, Edge), it will "clean" it automatically showing the final (shorter and readable) URL.

Any module to achive this? I was not succesful to find any. Thanks.

Replies are listed 'Best First'.
Re: Cleaning URL
by Your Mother (Archbishop) on Nov 23, 2016 at 17:26 UTC

    Update: URI + URI::QueryParam.

    #!/usr/bin/env perl use strictures; use URI; use URI::QueryParam; my $in = URI->new('http://www.bing.com/cr?IG=E1B087FDC4A64C13B6B6F56EE +3AA3510&CID=04F7052A8A496C5127170CFC8BAE6DD4&rd=1&h=mRcJ09asL7Bb7lrqF +pfdvPQYVwtg1d5J6vMWCRwXbAk&v=1&r=http%3a%2f%2fwww.raiscuola.rai.it%2f +articoli%2fstato-della-ricerca-scientifica-in-italia%2f19049%2fdefaul +t.aspx&p=DevEx,5328.1'); my $out = 'http://www.raiscuola.rai.it/articoli/stato-della-ricerca-sc +ientifica-in-italia/19049/default.aspx'; my $r = $in->query_param("r"); print $r, $/; print $out eq $r ? "Same same\n" : "No es correcto\n"; __END__ http://www.raiscuola.rai.it/articoli/stato-della-ricerca-scientifica-i +n-italia/19049/default.aspx Same same

      Brilliant. Thank you!

Re: Cleaning URL
by neilwatson (Priest) on Nov 23, 2016 at 17:25 UTC