Now that you understand how "require" looks for files in the case of a bareword argument, there is a little extra functionality going on behind the scenes. Before "require" looks for a ".pm" extension, it will first look for a filename with a ".pmc" extension. A file with this extension is assumed to be Perl bytecode generated by B::Bytecode. If this file is found, and it's modification time is newer than a coinciding ".pm" non-compiled file, it will be loaded in place of that non-compiled file ending in a ".pm" extension.