About Me
Ynon Perek
me@ynonperek.com
This keynote is available at:
http://ynonperek.com
Tuesday, September 18, 12
Meta Who
Person Keynote
has many
Tuesday, September 18, 12
Meta Who
Meta-Person Meta-Keynote
Person Keynote
has many
Tuesday, September 18, 12
Meta Class
What can my class do ?
What does my class know ?
Tuesday, September 18, 12
Meta Zombie
package main;
my $z = Zombie->new;
while (chomp ( my $that = <> ) ) {
my $m = Zombie->meta->find_method_by_name("eat_${that}");
$m->execute($z) if $m;
}
Tuesday, September 18, 12
Useful Meta
MooseX::HasDefaults::RO
Assign a meta-role to every attribute
which adds:
is => ‘ro’
Uses _process_options
Tuesday, September 18, 12
Useful Meta
MooseX::FollowPBP
Automatically set reader and writer to
get_name and set_name
Tuesday, September 18, 12
Useful Meta
MooseX::Privacy
Private Methods Using
meta
Tuesday, September 18, 12
MooseX::Privacy
use MooseX::Privacy;
has config => (
is => 'rw',
isa => 'Some::Config',
traits => [qw/Private/],
);
private_method foo => sub {
return 23;
};
Tuesday, September 18, 12
A few more
package MyApp;
use MooseX::Singleton;
MooseX::Singleton
package main;
MooseX::YAML my $instance = MyApp->instance;
my $same = MyApp->instance;
Tuesday, September 18, 12
What I Had
Quote Video Keynote
Tuesday, September 18, 12
What I Need
Quote Video Keynote
admin/ admin/ admin/
quote video keynote
Tuesday, September 18, 12
The Meta Way
has 'name', isa => 'Str', required => 1, in_db => 1,
form_opts => { type => 'text_field'};
has 'description', isa => 'Str', required => 1, in_db => 1,
form_opts => { type => 'textarea_field' };
has 'url', isa => 'Str', required => 1, in_db => 1,
form_opts => { type => 'text_field'};
has 'category', isa => 'Str', default => '', in_db => 1,
form_opts => {
type => 'select_field',
options => YPCourse::Category->get_categories,
};
Tuesday, September 18, 12