Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: C-Style Struct?

by influx (Beadle)
on Aug 08, 2012 at 18:51 UTC ( #986340=note: print w/ replies, xml ) Need Help??


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');


Comment on Re: C-Style Struct?
Download Code
Re^2: C-Style Struct?
by influx (Beadle) on Aug 08, 2012 at 19:02 UTC

    Thinking about it, Class::Struct as mentioned in the first reply is probably a nicer option. Seems to do the same thing, but better. And it looks like it's included in perl5.16 - nice!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://986340]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (8)
As of 2014-12-18 04:20 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (41 votes), past polls