If you want to split up path elements, look at File::Spec or Path::Class, which handle all of the operating system specific stuff:
use File::Spec;
my( $root, @path_parts ) = File::Spec->splitdir( $path );
The nice thing about keeping the root is that you can go backward easily and still keep that leading slash (or whatever your opearting system might use):
my $path = File::Spec->catfile( $root, @path_parts );
This isn't such a big deal with URLs since they all use a unix-like path specification. Still, it's easy to construct the local path in the same way, and remember where the root is (which may be important on Windows, VMS, etc):
my ($docroot_root, @doc_root ) = File::Spec->splitdir( $ENV{DOCUMENT_ROOT} );
my $local_path = File::Spec->catfile( $docroot_root, @doc_root, @path_parts );
Otherwise, you're stuck with what split does. It assumes that you care about the position of fields, so it preserves their position (i.e. the thing before the first separator is always position 0 in the list, even if it is empty). For your problem, I tend to write it as a list assignment where I use a variable to soak up the initial empty field, just like I'd do with
my( $root, @path_parts ) = split m|/|, $path;