require only loads a file once. The second
require is doing nothing. Since your Value.pm file doesn't have a package declaration, its symbols belong to the package that required it first, that is,
MainModule.
Have you considerd using use and Exporter (and giving a proper package declaration to Value.pm)?