Comment by jstanley
2 days ago
> I don't miss perls halfarsed function args.
You mean you don't like writing things like...
sub foo {
my ($a, $b, $c) = shift;
?
2 days ago
> I don't miss perls halfarsed function args.
You mean you don't like writing things like...
sub foo {
my ($a, $b, $c) = shift;
?
Indeed!
It just grinds my gears that _I_ need to check to see if the caller has given me all the required bits. That seems like something the language should do.
I understand that it does give you a lot of flexibility, but Hnnnnnnnnn
(from what I recall object oriented perl doesn't give you this flexibility, but I'm not sure, as I never really did it. )
Object oriented perl gives you exactly the same flexibility.
If you have a module called "My::Module", and you call "My::Module->some_method", then you'd implement that like:
i.e. the module gets passed (as a string) as the first argument. You can then call
And similarly, if you have an object "$foo" you would call it like "$foo->some_other_method" and implement it as:
i.e. the object gets passed as the first argument. And you can call "$self->some_other_method" with it.
A minimal class is just:
Don't let them tell you you need Moo or Moose or Mouse or fields.pm. Hand-rolled objects is the way :)
Where @_ is array of arguments, and ($$$) is function prototype (3 scalars are expected).
Perl has subroutine signatures now. You can write
sub foo ($x, $y, $x) { ...}
It's just syntactic sugar, so you still can't pass in multiple lists, and the list must be the final parameter.
Not sure if you've deliberately put in two bugs there haha
1. shift only shifts off the first element.
2. (if classify this as a bug) using $a and $b are frowned upon because they're the default variables when using sort.
Oh wow I had forgotten about default variables. Such a lovely and inscrutable idea.
Ha, (1.) was deliberate but I'd forgotten (2.)
Yeah, you probably want
:-D
5 replies →