First of all, i strongly join the people who recommended using Perl::Critic. It is an excellent to improve your style
Actually, using Perl::Critic doesn't help you to improves one style. It will however help you mimic the style of the people in charge of Perl::Critic.
my ($self) = @_; # You should probably write:
my ($self) = shift; # Option 1.
my ($self) = $_[0]; # Option 2. The two options do a very similar thin
+g, choose the one that suits you and make sure you understand what th
+ey mean.
I loathe this kind of advice. You give two alternatives to a line, without any explanation of why any of the alternatives are better.
I certainly don't see any problem with the first line than any of the alternatives solves.
for (my $i = 1; $i <= $size; $i++) # This is OK, but it is C style, no
+t Perl.
It's Perl. Hence, it's Perl style. Just because it looks like C doesn't mean it's bad.
for my $i (1 .. $size) # This is more Perlish and more readable. It's
+a matter of taste.
If it's a matter of taste, why recommend one over the other?
Personally, I also look at the body when deciding what kind of loop to use. In this case, I wouldn't use a for statement at all.
$self->{allowed} = [undef, (1) x $size];
I suspect
$self->{allowed}[0] is never used, but I didn't look at the code a lot. If it's not used, I wouldn't use the
undef in the code above.