#! perl -slw use strict; while() { chomp; my $code = $_; tr/\n//d; s[(?:sub)*\s*((?:INIT|CHECK|BEGIN|END)\s*{)][sub syntax_check_$1]g; s[\b(?:use)\b\s*][no ]g; eval 'return;' . $_; print "'$_' \n\t: ", $@ ? "Fails with\n$@" : 'Passes syntax check'; } __END__ INIT { print '*** INIT GOTCHA!!! ***'; } sub INIT { print '*** INIT GOTCHA!!! ***'; } CHECK{ print '*** CHECK GOTCHA!!! ***'; } sub CHECK{ print '*** CHECK GOTCHA!!! ***'; } BEGIN{ print '*** BEGIN GOTCHA!!! ***'; } sub BEGIN{ print '*** BEGIN GOTCHA!!! ***'; } END { print '*** END GOTCHA!!! ***'; } sub END { print '*** END GOTCHA!!! ***'; } require 'POSIX'; do 'POSIX.pm'; use POSIX qw[ceil floor]; $a=ceil($b); $b=floor($a); my $a = 1; my $a = cool; my $