#! /usr/bin/perl -w
use strict;
use URI;
my $image = 'http://www.example.com/img/navleft1.jpg';
my $i = URI->new($image);
print 'relative ', $i->rel('http://www.example.com/story/page4.html'),
+ "\n";
print 'relative ', $i->rel('http://www.example.com/story/down/here/pag
+e6.html'), "\n";
That said, I believe (although I could be wrong) that the most efficient way to reference an URL it to give it the absolute path relative to the current host. Which means in your case, you want to emit '/img/navleft1.jpg'. In which case all you have to do is use the path method. The result of this is that you minimise the number of directories you have to stat.
update: I didn't remember to say this earlier, but another approach would be to build an image server: a web server that is tuned specifically to pumping out static objects (thus, images) on a separate host.
print@_{sort keys %_},$/if%_=split//,'= & *a?b:e\f/h^h!j+n,o@o;r$s-t%t#u' |