in reply to
C-Style Struct?
I'm not really familiar with C. But does this work like a struct?
sub struct {
my ($name, %args) = @_;
localscope: {
# we want to mangle the symbol table
# so set 'no strict refs'
no strict 'refs';
foreach my $a (keys %args) {
*{"${name}::${a}"} = sub {
my ($class, $val) = @_;
# val means it needs updating
if ($val) {
nowarning: {
no warnings 'redefine';
*{"${name}::${a}"} = sub {
$val;
};
} # end nowarning
return $val;
}
return $args{$a}
};
}
} # end localscope
}
# Create a new struct
struct 'Player' => (
count_var => 0,
name => 'Zork',
list_of_stuff => ['a', 'b']
);
print Player->name;
# you can update a value in this "struct", like so
Player->name('Zippy');