|
#!/usr/local/bin/perl ## load in dependencies use strict; use HTML::Mason::Compiler::ToObject; use File::Temp; ## usage die "usage: $0 mason-component\n" unless @ARGV == 1 && $ARGV[0] !~ /^-/; my $file = $ARGV[0]; ## read in the component open(my $fh, '<', $file) || die "$0: couldn't open comp $file: $!\n"; my $src = do { local $/; <> }; close($fh); ## do the component parsing my $c = HTML::Mason::Compiler::ToObject->new( default_escape_flags => 'h', use_source_line_numbers => 1, ); my $code = $c->compile(comp_source => \$src, name => $file); ## create a tmpfile and write the parsed perl to it my ($fh, $tmp) = File::Temp::tempfile('/tmp/masoncheck.XXXX'); print $fh "my \$r;\n"; print $fh ($$code); close($fh); ## syntax check the perl system($^X, '-cw', $tmp); ## cleanup the tmpfile unlink($tmp); |