The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
package TestBed;

$DB::single = 1;

use Attribute::Handlers::Prospective;

use Data::Dumper 'Dumper';

sub Attr : ATTR(CODE) {
	print 'Attr: ', Dumper \@_;
}

sub VarAttr : ATTR(CHECK,RUN,VAR) {
	tie ${$_[2]}, Loud;
}

sub Another_Attr : ATTR(ANY,RAWDATA) {
	print 'Another_Attr: ', Dumper \@_;
}

sub AUTOATTR : ATTR {
	print 'Default attribute handler: ', Dumper \@_;
}

sub PREATTR: ATTR {
 	use Data::Dumper 'Dumper';
 	print "Pre: ", Dumper [ \@_ ];
}
 
sub POSTATTR: ATTR {
 	use Data::Dumper 'Dumper';
	print "Post: ", Dumper [ \@_ ];
}

package Loud;

sub TIESCALAR { bless {} }

sub STORE { print "<<<STORING $_[1]>>>\n" ; $_[0]{val} = $_[1] }
sub FETCH { print "<<<FETCHING>>>\n"; $_[0]{val} }

1;

sub Ly: ATTR {}