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.
in reply to using newer modules
Update: I was wrong.
AgentM Systems nor Nasca Enterprises nor
Bone::Easy nor Macperl is responsible for the
comments made by
AgentM. Remember, you can build any logical system with NOR.