perldoc > Exporter::Tiny::Manual::QuickStart

📖 NAME

Exporter::Tiny::Manual::QuickStart — the quickest way to get up and running with Exporter::Tiny

🚀 Quick Reference

Use CaseCommandDescription
Basic export setupuse Exporter::Shiny qw( frobnicate );🛠️ Create a module with one exported function
Import with aliasuse MyUtils "frobnicate" => { -as => "frob" };🔀 Import function under a different name
Default exportsour @EXPORT = qw( frobnicate );📦 Make functions available without explicit import list
Export tagsour %EXPORT_TAGS = ( utils => [qw/ frobnicate /] );🏷️ Group exports for convenient importing
Custom generator subsub _generate_frobnicate { ... }⚙️ Generate customized subs for the caller
Direct Exporter::Tinyuse parent "Exporter::Tiny";🔄 Use base class directly instead of Exporter::Shiny

📝 SYNOPSIS

package MyUtils;

use Exporter::Shiny qw( frobnicate );

sub frobnicate {
   ...;   # your code here
}

1;

Now people can use your module like this:

use MyUtils "frobnicate";

frobnicate(42);

Or like this:

use MyUtils "frobnicate" => { -as => "frob" };

frob(42);

📚 DESCRIPTION

See the synopsis. Yes, it's that simple.

🔜 Next steps

📦 Default exports

Note that the module in the synopsis doesn't export anything by default. If people load "MyUtils" like this:

use MyUtils;

Then they haven't imported any functions. You can specify a default set of functions to be exported like this:

package MyUtils;

use Exporter::Shiny qw( frobnicate );

our @EXPORT = qw( frobnicate );

sub frobnicate { ... }

1;

Or, if you want to be a superstar rock god:

package MyUtils;

use Exporter::Shiny our @EXPORT = qw( frobnicate );

sub frobnicate { ... }

1;

🏷️ Tags

You can provide tags for people to use:

package MyUtils;

use Exporter::Shiny qw( frobnicate red green blue );

our %EXPORT_TAGS = (
   utils   => [qw/ frobnicate /],
   colours => [qw/ red green blue /],
);

sub frobnicate { ... }
sub red        { ... }
sub green      { ... }
sub blue       { ... }

1;

And people can now import your functions like this:

use MyUtils ":colours";

Or this:

use MyUtils "-colours";

Or take advantage of the fact that Perl magically quotes barewords preceded by a hyphen:

use MyUtils -colours;

Two tags are automatically defined for you: -default (which is just the same as @EXPORT) and -all (which is the union of @EXPORT and @EXPORT_OK). If you don't like them, then you can override them:

our %EXPORT_TAGS = (
   default => \@some_other_stuff,
   all     => \@more_stuff,
);

⚙️ Generators

Exporting normally just works by copying a sub from your package into your caller's package. But sometimes it's useful instead to generate a custom sub to insert into your caller's package. This is pretty easy to do.

package MyUtils;

use Exporter::Shiny qw( frobnicate );

sub _generate_frobnicate {
   my $me     = shift;
   my $caller = caller;
   my ($name, $args) = @_;

   return sub {
       ...;  # your code here
   };
}

1;

The parameter $me here is a string containing the package name which is being imported from; $caller is the destination package; $name is the name of the sub (in this case frobnicate); and $args is a hashref of custom arguments for this function.

# The hashref { foo => 42 } is $args above.
#
use MyUtils "frobnicate" => { foo => 42 };

🚫 Avoiding Exporter::Shiny

Exporter::Shiny is a tiny shim around Exporter::Tiny. It should mostly do what you want, but you may sometimes prefer to use Exporter::Tiny directly.

The example in the synopsis could have been written as:

package MyUtils;

use parent "Exporter::Tiny";
our @EXPORT_OK = qw( frobnicate );

sub frobnicate {
   ...;   # your code here
}

1;

What Exporter::Shiny does is mostly just to set @EXPORT_OK for you and set up inheritance from the base class (Exporter::Tiny).

Exporter::Shiny also sets $INC{'MyUtils.pm'} for you, which in usually makes little difference, but is useful in some edge cases.

👀 SEE ALSO

✍️ AUTHOR

Toby Inkster <tobyink AT cpan.org>.

📄 COPYRIGHT AND LICENCE

This software is copyright (c) 2013-2014, 2017 by Toby Inkster.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

⚠️ DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.

Exporter::Tiny::Manual::QuickStart
📖 NAME 🚀 Quick Reference 📝 SYNOPSIS 📚 DESCRIPTION
🔜 Next steps 📦 Default exports 🏷️ Tags ⚙️ Generators 🚫 Avoiding Exporter::Shiny
👀 SEE ALSO ✍️ AUTHOR 📄 COPYRIGHT AND LICENCE ⚠️ DISCLAIMER OF WARRANTIES

Generated by phpman v4.9.26-5-g7740029 · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-08-16 10:47 @216.73.216.208
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!

^_top_^