After writing some vim code to run your POD code, I realized I needed another snippet to simply tell me if my POD code compiled (without running it). The vim mapping:
vnoremapc :!perl ~/bin/validperl
Select a region of Perl code, hit ",c" (or whatever your leader is) and if no compilation errors are detected, you'll see no change. Otherwise, they will be added after an "__END__" token. Here's the code for validperl:
#!/usr/bin/env perl use strict; use warnings; use File::Temp 'tempfile'; my $tmpdir = '/var/tmp'; my ( $fh, $snippet ) = tempfile( 'eval_XXXX', SUFFIX => '.pl', DIR => $tmpdir, ); my $code = do { local $/;}; print $fh $code or die "Could not print code to ($snippet): $!"; close $fh or die "Could not close ($snippet): $!"; my $perl = $^X; print $code; my $output = qx{ $perl -Ilib -c $snippet 2>&1 }; exit if $output =~ m{^$tmpdir/eval_\w+.pl syntax OK$}; $output =~ s/\n/\n /g; print " __END__\n $output";
This is not working with incomplete sample code, is it? Code that does not include the necessary (but trivial) use Foo::Bar
lines, or object instantiation (Foo::Bar->new
)?
Just because code is incomplete, doesn't mean that it's wrong.
And adding redundant code is not making examples clearer.
Re:Incomplete examples
Ovid on 2009-11-14T20:22:45
It's certainly not perfect for all things and that's unfortunate. I don't know of any other way around that. I've thought of various tricks (s/use/require/), but that breaks other things. In short, it won't work for everyone, but if it does, it's a nice check.