# 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

