Не могу с уверенностью сказать, что это проблема, но вы можете взглянуть на прагму subs
для предварительного определения ваших функций.
Быстрый выход ...
#!/usr/bin/env perl
use strict;
use warnings;
use subs "myclear";
my $var = 1;
myclear;
print $var;
sub myclear () {
$var = 0;
}
Кроме того, поскольку такого рода процедурные команды, скорее всего, будут выполняться как собственное утверждение, для них действительно не требуется нулевой прототип или какой-либо прототип вообще.
#!/usr/bin/env perl
use strict;
use warnings;
use subs "myclear";
my $var = 1;
myclear;
print $var;
sub myclear {
$var = 0;
}