The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -w

use strict;
use Test::More tests => 10;

BEGIN{
	package X;
	use Sub::Attribute;
	use Test::More;

	sub C :ATTR_SUB{
		my($class, $sym, $code, $name, $data) = @_;
		ok($class->isa('X'), "handler $name called");
		is ref($sym), 'GLOB', 'sym';
		is ref($code), 'CODE', 'code';
		is $name, 'C', 'name';

		no warnings 'redefine';
		*{$sym} = sub{ $data };
	}

	$INC{'X.pm'}++;
}

use parent -norequire => qw(X);

sub foo :C(10){ 42 }
sub bar :C("20");


is foo(), 10, 'foo() redefined';
is bar(), q{"20"}, 'bar() redefined';