in reply to conditional 'use'

BEGIN { my $module = eval { require Module0; 'Module0' } || eval { require Module1; 'Module1' } || die("Module0 or Module1 are required\n"); $module->import(); }

You can pass arguments to import if you want to import specific symbols (like use Module qw( ... );) instead of the defaults (like use Module;), or you can omit the call entirely if you don't want to import anything (like use Module qw();).

Also, if you want $module to be available later on, you can move the my outside of the BEGIN.

my $module; BEGIN { $module = eval { require Module0; 'Module0' } || eval { require Module1; 'Module1' } || die("Module0 or Module1 are required\n"); $module->import(); }