Correct me if I'm wrong but Perl will use the first module it finds (for a match) in @INC. When you use lib;, the directory is pushed onto the array @INC, so when it comes time to search for the module, the old CGI is found first. You'll want to use unshift to add the directory to @INC.