# in module YourModule.pm:
package YourModule;
use Exporter ();
@ISA = qw(Exporter);

@EXPORT = qw(...);            # Symbols to export by default.
@EXPORT_OK = qw(...);         # Symbols to export on request.
%EXPORT_TAGS = tag => [...];  # Define names for sets of symbols.

# in other files that wish to use YourModule:
use YourModule;               # Import default symbols into my package.
use YourModule qw(...);       # Import listed symbols into my package.
use YourModule ();            # Do not import any symbols!
*****
@EXPORT      = qw(A1 A2 A3 A4 A5);
@EXPORT_OK   = qw(B1 B2 B3 B4 B5);
%EXPORT_TAGS = (
    T1 => [qw(A1 A2 B1 B2)],
    T2 => [qw(A1 A2 B3 B4)]
);
*****
use YourModule qw(:DEFAULT :T2 !B3 A3);
*****
use Socket qw(!/^[AP]F_/ !SOMAXCONN !SOL_SOCKET);
use POSIX  qw(:errno_h :termios_h !TCSADRAIN !/^EXIT/);
*****
BEGIN { $Exporter::Verbose=1 }
*****
@failed_symbols = $module_name->export_fail(@failed_symbols);
*****
%EXPORT_TAGS = (Bactrian => [qw(aa bb cc)], Dromedary => [qw(aa cc dd)]);
*****
Exporter::export_tags('Bactrian');     # add aa, bb and cc to @EXPORT
Exporter::export_ok_tags('Dromedary'); # add aa, cc and dd to @EXPORT_OK
