http://www.perlmonks.org?node_id=1036211


in reply to yet another prototype bug? (not, please ignore)

hmm ...can't reproduce!

For me both cases are consistent and throw warnings instead of dieing

perl -version This is perl, v5.10.0 built for i486-linux-gnu-thread-multi

code:
BEGIN { $SIG{__WARN__}=sub { print "WARNING: $_[0] \n" }; } $|=1; sub fn1($); fn1("output1"); sub fn1 (\@) { print while $_ = shift; } sub fn2($); fn2("output2"); sub fn2 (\@) { print $_,$/ for @_; }

output:

$ perl /tmp/proto.pl WARNING: Prototype mismatch: sub main::fn1 ($) vs (\@) at /tmp/proto.p +l line 11. WARNING: Prototype mismatch: sub main::fn2 ($) vs (\@) at /tmp/proto.p +l line 18. output1output2

If you want it do die try to catch the /^Prototype mismatch:/ in $SIG{__WARN__}

Cheers Rolf

( addicted to the Perl Programming Language)

UPDATE

¹) or check if categories in warnings help defining "Fatals" on "Prototype mismatch".