array access at compile time.
The related C<base> pragma will combine fields from base classes and any
-fields declared using the C<fields> pragma. This enables fields
+fields declared using the C<fields> pragma. This enables field
inheritance to work properly.
Field names that start with an underscore character are made private to
sub new {
my Critter::Sounds $self = shift;
- $self = fields::new($class) unless ref $self;
+ $self = fields::new($self) unless ref $self;
$self->{cat} = 'meow'; # scalar element
- @$self->{'dog','bird'} = ('bark','tweet'); # slice
+ @$self{'dog','bird'} = ('bark','tweet'); # slice
return $self;
}
use 5.005_64;
use strict;
no strict 'refs';
+use warnings::register;
our(%attr, $VERSION);
-$VERSION = "1.01";
+$VERSION = "1.02";
# some constants
sub _PUBLIC () { 1 }
if ($fno and $fno != $next) {
require Carp;
if ($fno < $fattr->[0]) {
- Carp::carp("Hides field '$f' in base class") if $^W;
+ warnings::warnif("Hides field '$f' in base class") ;
} else {
Carp::croak("Field name '$f' already in use");
}