One of the interesting features might be that chains of functions like grep could be read left to right, not right to left. The arrow does not work on lists nor arrays (it imposes scalar context, so it operates on the last member or size, respectively):
#!/usr/bin/perl use warnings; use strict; my $join = sub {join pop, @{shift()} }; my $grep = sub { my $f = pop; [ grep {$f->($_)} @{shift()} ]}; my $say = sub { print @_, "\n" }; [1 .. 120]->$grep(sub { /0/ } ) ->$grep(sub { /1/ } ) ->$join("\n") ->$say("\nIt works!");
You can also define a grep-like "method" of a regex or code ref, or make the function decide based on the type of the argument:
#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my $grep = sub { my $f = shift; return { CODE => sub { grep $f->($_), @_ }, Regexp => sub { grep /$f/, @_ }, q() => sub { grep $_ <= $f, @_ }, }->{ref $f}->(@_); }; say for qr/[01]/->$grep(1 .. 100); say '-' x 20; say for sub { not $_ % 10 }->$grep(1 .. 100); say '-' x 20; say for 5->$grep(1 .. 100);
In reply to Re: Autoboxing ... "Yes We Can" ( or how I learned to love TIMTOWTDI )
by choroba
in thread Autoboxing ... "Yes We Can" ( or how I learned to love TIMTOWTDI ;)
by LanX
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |