in reply to eval 'use module::name' is called more than once

use calls require and the module's import method. The global %INC hash is checked when require is called, so the file is only executed once, but import is always called. This is so that when 'use Module' (with or without an import list) is in more than one package, symbols can be imported into each package the 'use Module' appears in. You can however, fool require if you really want to:
use Module; # Say Module.pm is in current directory require "./Module.pm"; for my $file (keys %INC) { print "$file $INC{$file}\n"; } # Prints Module.pm Module.pm ./Module.pm ./Module.pm