GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages


Manual Reference Pages  -  METHOD::SIGNATURES::SIMPLE (3)

.ds Aq ’

NAME

Method::Signatures::Simple - Basic method declarations with signatures, without source filters

CONTENTS

VERSION

version 1.07

SYNOPSIS



    # -- a basic class -- #
    package User;
    use Method::Signatures::Simple;

    method new ($class: $name, $email) {
        my $user = {
            id    => new_id(42),
            name  => $name,
            email => $email,
        };
        bless $user, $class;
    }

    func new_id ($seed) {
        state $id = $seed;
        $id++;
    }

    method name  { $self->{name};  }
    method email { $self->{email}; }
    1;


    # -- other features -- #
    # attributes
    method foo : lvalue { $self->{foo} }

    # change invocant name
    use Method::Signatures::Simple invocant => $this;
    method foo ($bar) { $this->bar($bar) }
    method bar ($class: $bar) { $class->baz($bar) }

    # use a different function keyword
    use Method::Signatures::Simple function_keyword => fun;
    fun triple ($num) { 3 * $num }

    # use a different method keyword
    use Method::Signatures::Simple method_keyword => action;
    action foo { $self->bar }



RATIONALE

This module provides basic method and func keywords with simple signatures. It’s intentionally simple, and is supposed to be a stepping stone for its bigger brothers MooseX::Method::Signatures and Method::Signatures. It only has a small benefit over regular subs, so if you want more features, look at those modules. But if you’re looking for a small amount of syntactic sugar, this might just be enough.

FEATURES

o invocant

The method keyword automatically injects the annoying my $self = shift; for you. You can rename the invocant with the first argument, followed by a colon:



    method ($this:) {}
    method ($this: $that) {}



The func keyword doesn’t inject an invocant, but does do the signature processing below:



    func ($that) {}



o signature

The signature ($sig) is transformed into "my ($sig) = \@_;". That way, we mimic perl’s usual argument handling.



    method foo ($bar, $baz, %opts) {
    func xyzzy ($plugh, @zorkmid) {

    # becomes

    sub foo {
        my $self = shift;
        my ($bar, $baz, %opts) = @_;

    sub xyzzy {
        my ($plugh, @zorkmid) = @_;



ADVANCED CONFIGURATION

Since this module subclasses Devel::Declare::MethodInstaller::Simple, you can change the keywords and the default invocant with import arguments. These changes affect the current scope.
o change the invocant name



    use Method::Signatures::Simple invocant => $this;
    method x { $this->{x} }
    method y { $this->{y} }

    # and this of course still works:
    method z ($self:) { $self->{z} }



o change the keywords

You can install a different keyword (instead of the default ’method’ and ’func’), by passing names to the use line:



    use Method::Signatures::Simple method_keyword   => action,
                                   function_keyword => thing;

    action foo ($some, $args) { ... }
    thing bar ($whatever) { ... }



One benefit of this is that you can use this module together with e.g. MooseX::Declare:



    # untested
    use MooseX::Declare;

    class Foo {
        use Method::Signatures::Simple method_keyword => routine;
        method x (Int $x) { ... }    # from MooseX::Method::Signatures
        routine y ($y) { ... }       # from this module
    }



If you specify neither method_keyword nor function_keyword, then we default to injecting method and func. If you only specify one of these options, then we only inject that one keyword into your scope.

Examples:



    # injects method and func
    use Method::Signatures::Simple;

    # only injects action
    use Method::Signatures::Simple method_keyword => action;

    # only injects procedure
    use Method::Signatures::Simple function_keyword => procedure;

    # injects action and function
    use Method::Signatures::Simple method_keyword   => action,
                                   function_keyword => function;



o install several keywords

You’re not limited to a single use line, so you can install several keywords with the same semantics as ’method’ into the current scope:



    use Method::Signatures::Simple; # provides method and func
    use Method::Signatures::Simple method_keyword => action;

    method x { ... }
    func y { ... }
    action z { ... }



AUTHOR

Rhesa Rozendaal, <rhesa at cpan.org>

BUGS

Please report any bugs or feature requests to bug-method-signatures-simple at rt.cpan.org, or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Method-Signatures-Simple>. I will be notified, and then you’ll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.



    perldoc Method::Signatures::Simple



You can also look for information at:
o RT: CPAN’s request tracker

<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Method-Signatures-Simple>

o AnnoCPAN: Annotated CPAN documentation

<http://annocpan.org/dist/Method-Signatures-Simple>

o CPAN Ratings

<http://cpanratings.perl.org/d/Method-Signatures-Simple>

o Search CPAN

<http://search.cpan.org/dist/Method-Signatures-Simple>

ACKNOWLEDGEMENTS

o MSTROUT

For writing Devel::Declare and providing the core concepts.

o MSCHWERN

For writing Method::Signatures and publishing about it. This is what got my attention.

o FLORA

For helping me abstracting the Devel::Declare bits and suggesting improvements.

o CHIPS

For suggesting we add a ’func’ keyword.

SEE ALSO

Devel::Declare, Method::Signatures, MooseX::Method::Signatures.

COPYRIGHT & LICENSE

Copyright 2011 Rhesa Rozendaal, all rights reserved.

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

Search for    or go to Top of page |  Section 3 |  Main Index


perl v5.20.3 METHOD::SIGNATURES::SIMPLE (3) 2013-01-20

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.