#!/usr/bin/perl use strict; use warnings; use Config::IniFiles; die "File does not !" unless -e "brick_from_config.ini"; open my( $fh ), "<", "brick_from_config.ini" || die "$!"; my $config = Config::IniFiles->new( '-file' => $fh, ) || die "Could not make object!"; my @sections = $config->Sections; my $bucket = Brick::Bucket->new(); foreach my $section ( @sections ) { print "Processing section $section...\n"; $bucket->create_brick( { code => $config->val( $section, 'code' ), message => $config->val( $section, 'message' ), field => $config->val( $section, 'field' ), name => $config->val( $section, 'name' ), name => $config->val( $section, 'description' ), } ); } BEGIN { use Brick::Bucket; use Scalar::Util; sub main::length_is_three { return 1 if length $_[0] == 3 } sub Brick::Bucket::create_brick { my( $bucket, $setup ) = @_; my( $package, $sub_name ) = do { if( $setup->{code} =~ /(.*)::(.*)/ ) { ( $1, $2 ) } else { ( 'Brick', $setup->{code} ) } }; print STDERR "Package is $package; sub is $sub_name\n"; my $coderef = $package->can( $sub_name ); print STDERR "Coderef is $coderef\n"; return unless defined $coderef; print STDERR "Got a coderef!\n"; my $sub = sub { my $input = shift; return 1 if eval { $coderef->( $input->{ $setup->{field} } ) }; die { message => $setup->{message}, field => $setup->{field}, handler => $setup->{code}, } }; $bucket->add_to_bucket( { name => $setup->{name}, description => $setup->{description}, code => $sub, } ); } };