Two ideas about rubyish perl

作者:   發佈於:  

There are several nice things that I want to port them from Ruby, to Perl, in the Rubyish distribution.

The first is to allowing a block as the last argument when calling a sub-routine, but with the syntax like:

foo($a, $b, $c) {
    my ($d) = @_;
    ....
};

this means: calling "foo" subroutine with 4 arguments: $a, $b, $c and a code ref. Similar work had already been done in Markapl. However, Markapl turns only HTML tag names into special keywords, to do this for any possible sub-routine names, it'll definitely need more Devel::Declare-fu.

It's relatively trivial to port block_given? and yield to Perl.

The second is to allow question marks and/or in the subroutine name. It's possible to define such subroutine in Perl by saying:

*{"is_foo?"} = sub { ... };

And to call it:

# one way
*{"is_foo?"}->();
# the other
__PACKAGE__->can("is_foo?")->();
# and some more
$m = 'is_foo?';
__PACKAGE__->$m;

They only works without the strict pragma.