#!/usr/bin/ruby require 'uri' # Fix for broken URI.parse (doesn't allow '_' in subdomains) module URI class << self alias origsplit split def split(uri) return origsplit(uri) unless uri.gsub!(/^([^:]+:\/\/[^\/]+)_/,'\1UNDERLINEuriSplitISbrokenUNDERLINE') fix = origsplit(uri) fix[2].gsub!(/UNDERLINEuriSplitISbrokenUNDERLINE/,'_') fix end end end puts URI.parse("http://whatever.domain.com") puts URI.parse("http://whatever_again.domain.com")