Re: sub variables
by LanX (Saint) on Jul 23, 2017 at 00:06 UTC
|
> In Perl 5, is there a way to name my variables in the () of the sub declaration,
Yes newer Perl versions have an experimental new feature for signatures
see https://www.effectiveperlprogramming.com/2015/04/use-v5-20-subroutine-signatures/
> sub DoSomething( $DataStr ) {;}
Yes, positional arguments are supported.
Even with mandatory arguments or optional arguments with default values.
> as I do in Perl 6?
Not really.
Perl6 allows much more, like named variables, types and constraints
| [reply] [d/l] |
|
Thank you! I am on 5.16.3 Rats!
| [reply] |
|
| [reply] |
|
Re: sub variables
by kevbot (Vicar) on Jul 23, 2017 at 01:06 UTC
|
| [reply] |
Re: sub variables
by golux (Chaplain) on Jul 23, 2017 at 01:36 UTC
|
Hi Todd Chester,
I personally like the module Method::Signatures, but tbh it's the only one I've used.
I'll have to check out Function::Parameters for comparison's sake, which, judging by its date(s)
looks like it may be more recent.
say
substr+lc crypt(qw $i3 SI$),4,5
| [reply] |
|
I have a fairly large code-base that relies on Method::Signatures, and I have found that it works very well. However, it depends on Devel::Declare. The documentation for Devel::Declare states,
WARNING
Warning: Devel::Declare is a giant bag of crack originally implemented
+ by mst with the goal of upsetting the perl core developers so much b
+y its very existence that they implemented proper keyword handling in
+ the core.
As of perl5 version 14, this goal has been achieved, and modules such
+as Devel::CallParser, Function::Parameters, and Keyword::Simple provi
+de mechanisms to mangle perl syntax that don't require hallucinogenic
+ drugs to interpret the error messages they produce.
So, for new code I would recommend Function::Parameters.
Also, it looks like the author of Method::Signatures (schwern) would like for the two modules to work well together. See these github issues,
However, these issues are a few years old and I don't know how much progress has been made in addressing them.
| [reply] [d/l] |
|
Another module along this like is Toby Inkster's Kavorka, which seems very powerful.
| [reply] |
|
kevbot,
Thank you for that info. I have noticed that there is one glitch that occurs in Method::Signatures on occasion. I like to use a func fatal($msg) subroutine in conjunction with caller, to handle fatal errors in some of my programs, and Method::Signatures causes it to sometimes misreport the line from which the error occurred, which schwern alludes to in your link about making it into a wrapper, so it's nice to finally have confirmation of this!
In lieu of this I will try Function::Parameters with the hopes of using it as a replacement. I already like the idea of typing one less char for functions! (fun instead of func)
say
substr+lc crypt(qw $i3 SI$),4,5
| [reply] [d/l] [select] |
Re: sub variables
by karlgoethebier (Abbot) on Jul 23, 2017 at 12:51 UTC
|
#!/usr/bin/env perl
# http://perlmonks.org/?node_id=1195793
# $Id: signatures.pl,v 1.3 2017/07/23 12:44:30 karl Exp karl $
use strict;
use warnings;
use feature qw(say);
use signatures;
say $^V;
say nose(q(cuke));
sub nose ($cuke) {
$cuke;
}
__END__
But perhaps i missed the point because i don't know Perl6.
Best regards, Karl
«The Crux of the Biscuit is the Apostrophe»
perl -MCrypt::CBC -E 'say Crypt::CBC->new(-key=>'kgb',-cipher=>"Blowfish")->decrypt_hex($ENV{KARL});'Help
| [reply] [d/l] [select] |
|
| [reply] |
|
| [reply] |
|
|
| [reply] [d/l] |