in reply to Why so strict?

Several issues have been pointed out in the presented code, but the main one is that when you write:
my $c = ...
$c is not really declared until after the end of the current instruction. BTW, this is different in Perl 6, where $c gets declared immediately, before the assignment is actually executed. I am not really sure of what it is good for (it may be useful for some complicated instructions doing several things in one step), but that's anyway a difference between Perl 5 and Perl 6.