if($ENV{'SCRIPT_NAME'} =~ m|^(/~[^/]+/)|){
  $path = 'http://' . $ENV{'HTTP_HOST'} . $1;
}else{
  $path = 'http://' . $ENV{'HTTP_HOST'} . '/';
}

こんなところかな?
スマートではないけど。


tu-ka,Perlの話はPerlスレ逝け。