As I mentioned earlier the difference between use
and require
is that the second is evaluated only at execution time, making it possible to test if a given module was imported successfully. One possible use for this is to make your script deployable on multiple machines where you might or might not have the option to install modules from CPAN/PPM.
Below you can see an example for finding the YAML library in multiple possible places and then aliasing it to a variable, so that it can be referred to in an unique way ($yaml_dump-($stuff)), not matter from which library it got imported:
#try to determine the installed YAML library my $yaml_dump; eval { require Module::Build::YAML; $yaml_dump = &Module::Build::YAML::Dump; }; eval { require PPM::YAML; $yaml_dump = &PPM::YAML::serialize; } unless ($yaml_dump); eval { require YAML; $yaml_dump = &YAML::Dump; } unless ($yaml_dump); die("Failed to locate the YAML library!n") unless ($yaml_dump);