Kavorka::Manual::Functions - fun keyword
Kavorka provides the fun keyword for the purpose of defining functions (as against methods, etc).
fun
The anatomy of a function:
The keyword introducing the function.
The function name (optional).
The signature (optional).
The prototype (optional).
The attribute list (optional).
The function body.
Example:
# (1) (2) (3) (4) (5) (6) fun foobar ($foo, $bar) :($$) :cached { return $foo + $bar } # (1) (6) my $f = fun { return $_[0] + $_[1] };
This requires very little explanation. If you're no fun, and don't like the name fun, you can export it with a different name:
use Kavorka fun => { -as => 'function' };
If present, it specifies the name of the function being defined. If no name is present, the declaration is an expression that evaluates to a reference to the function in question.
Functions are automatically forward-declared; a la
sub foobar ($$);
but are installed into the symbol table at run-time. So this works:
if ($ENV{DEBUG}) { fun foobar { ... } } else { fun foobar { ... } }
It is possible to define lexical functions using a lexical variable for a function name:
fun my $add ($x, $y) { $x + $y; } my $sum = $add->(20, 22);
See Kavorka::Manual::Signature.
See Kavorka::Manual::PrototypeAndAttributes.
This is more or less what you'd expect from the function body you'd write with sub, however the lexical variables for parameters are pre-declared and pre-populated.
Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=Kavorka.
Kavorka::Manual, Kavorka::Manual::Signature, Kavorka::Manual::PrototypeAndAttributes, Kavorka::Manual::MultiSubs.
Toby Inkster <tobyink@cpan.org>.
This software is copyright (c) 2013 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.
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.
To install Kavorka, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Kavorka
CPAN shell
perl -MCPAN -e shell install Kavorka
For more information on module installation, please visit the detailed CPAN module installation guide.