Did you know that Perl 5 subroutine attributes can apply to forward declarations even if there's no full declaration later? I thought this was true, but I had to make sure.
You can get rid of a lot of unnecessary code with these tricks. (I like Attribute::Handlers a lot.)
use Test::More tests => 1; use P5NCI::Attribute library => 'nci_test', path => 'src'; sub double_int :NCI( double_int => ii ); is( double_int( 10 ), 20, 'NCI attribute should install named thunk' );
I don't know if general purpose NCI can get much shorter than this, but I like it.
You know, I never thought of applying attributes to forward declarations. You've gotten me thinking. That's probably a bad thing
use P5NCI::Attribute library => 'nci_test', path => 'src';
sub double_int :NCI( double_int => ii );
use P5NCI::Easy # *cringe*
library => 'nci_test',
path => 'src',
connect => [ 'double_int:ii' ];
use P5NCI::Simple nci_test => 'src', {
double_int => 'ii',
};
Re:But in terms of making it smaller...
chromatic on 2006-05-11T16:17:07
If only want to install a thunk as the name of the bound function, those all work too. This example doesn't really show that using different names here is trivial.
I do think this works on Perl 5.6.1. At least, the only thing I worry about is the attribute trick. (See the first code example on page 232 of Camel 3 for why I don't worry much.)