Class::Forward(3)
π Class::Forward π
okay bestie, welcome to Class::Forward(3) β the manual page for Class::Forward, and no cap, this thing is about to make your Perl namespaces look β¨immaculateβ¨.
πΈ VERSION πΈ
version 0.100006 β yeah she's on 0.100006, respect the number, it's giving mature.
π¦ SYNOPSIS π¦
use Class::Forward;
# create a resolution object
my $res = Class::Forward->new(namespace => 'MyApp');
# returns MyApp::Data
say $res->forward('data');
# returns a MyApp::Data instance
my $data = $res->forward('data.new');
# returns the string /my_app/data
my $string = $res->reverse('data.new');
# returns MyApp::Data
say $res->forward($string);
like, look at that. short little strings going IN, whole entire class names coming OUT. it's giving glow-up π
π DESCRIPTION π
so Class::Forward is designed to resolve Perl namespaces from shorthand β and shorthand here is literally just a file-path-like specification. that's the whole vibe. ποΈ
and she doesn't just resolve them, she can also be used to dispatch method calls using said shorthand. so you're not just naming your classes, you're doing stuff with them. the exported functions below have all the examples of how this can be used, so keep reading, i promise it slaps.
β¨ EXPORTS β¨
π clsf
the exported function clsf is responsible for resolving your shorthand. here's an example of how it functions, bestie, watch closely:
package App::Store;
use CGI;
use Class::Forward;
clsf; # returns App::Store
clsf './user'; # returns App::Store::User
clsf './user.new', name => 'N30'; # return a new App::Store::User object
clsf './user_profile.new'; # ... App::Store::UserProfile object
clsf '../user'; # returns App::User
clsf '//'; # returns App; (top of the calling class)
clsf '//.new'; # returns a new App object
clsf '//view'; # ... returns App::View
clsf '//view.new'; # ... returns a new App::View object
clsf '//view.new.render'; # ... dispatches methods in succession
clsf 'cgi'; # returns App::Store::Cgi
clsf '/cgi'; # returns Cgi (or CGI if already loaded)
1;
the way that clsf takes two arguments: the shorthand to be translated, and an optional list of arguments to be passed to the last method appended to the shorthand. two things. that's it. slay. π₯
π clsr
the exported function clsr is responsible for resolving your shorthand. here's how she functions, same energy, different direction:
package App::Store;
use CGI;
use Class::Forward;
clsr; # returns /app/store
clsr './user'; # returns /app/store/user
clsr './user.new', name => 'N30'; # returns /app/store/user
clsr './user_profile'; # returns /app/store/user_profile
clsr '../user'; # returns /app/user
clsr '//'; # returns /app
clsr '//.new'; # returns /app
clsr '//view'; # returns /app/view
clsr '//view.new'; # returns /app/view
clsr '//view.new.render'; # returns /app/view
clsr 'cgi'; # returns /app/store/cgi
clsr '/cgi'; # returns /cgi
1;
and clsr takes three arguments:
- the shorthand to be translated β required, don't skip her
- the offset β optional level of namespace nodes to omit left-to-right
- the delimiter to be used to generate the resulting path, which defaults to forward-slash
π METHODS π
β new
the new method is used to instantiate a new instance. that's the whole job. iconic, honestly.
πΈ namespace
the namespace method is used to get/set the root namespace used as an anchor for all resolution requests.
my $namespace = $self->namespace('MyApp');
anchor set, let's go π«Ά
π§ forward
the forward method (or forward_lookup, same girl different name) is used to resolve Perl namespaces from path-like shorthand.
say $self->forward('example');
# given a default namespace of MyApp
# prints MyApp::Example
π reverse
the reverse method (or reverse_lookup) is used to generate path-like shorthand from Perl namespaces.
say $self->reverse('Simple::Example');
# given a default namespace of MyApp
# prints /my_app/simple/example
say $self->reverse('Simple::Example', 1);
# given a default namespace of MyApp
# prints simple/example
say $self->reverse('Simple::Example', 1, '_');
# given a default namespace of MyApp
# prints simple_example
see that third arg? the '_'? that's the delimiter doing its little thing. obsessed. π
π SEE ALSO π
Class::Forward was designed to provide shorthand and easy access to class namespaces in an environment where you're dealing with a multitude of long well-named classes. like, when your class names are a whole paragraph, you need a shortcut, fr fr.
in that vein, it provides an alternative to modules like aliased, aliased::factory, as, and the like β and also modules like Namespace::Dispatch, which are similar enough to be mentioned but really address a completely different issue. so like, mutuals, but not the same person, iykyk. π
π AUTHOR π
Al Newkirk <anewkirk@ana.io>
π COPYRIGHT AND LICENSE π
This software is copyright (c) 2012 by Al Newkirk.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
okay that's the whole page, you're officially educated π go forth and resolve some namespaces, bestie.
and a lil sign-off for you: this gorgeous page comes to you from perl v5.42.0, dated 2025-07-25, and yes she's still serving Class::Forward(3) realness. periodt. π
β¨π¦
π¦ where this page comes from
- fedora 43: perl-Class-Forward 0.100006-34.fc43 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms