Michael G Schwern wrote:
> On Sun, Oct 26, 2003 at 04:45:48PM +1100, Andrew Savige wrote:
>> There is a misprint in this line:
>> my $have_testpod = !$@ and $Test::Pod::VERSION >= 0.95;
>> It should read:
>> my $have_testpod = !$@ && $Test::Pod::VERSION >= 0.95;
>
> I deliberately used and instead of &&. I'd noticed the original was
> using explicit parens to disambiuate the precendence to make sure there
> was no chance of it accidentally evaluating as:
>
> (!$@ && $Test::Pod::VERSION) >= 0.95
>
> for those of us that don't have the symbol table memorized. Instead of
> parens, I went with 'and'.
>
> But looking at the precdence table, either version will work.
Your version does not work (unless I've had a brain malfunction):
# cat sch.pl
use strict;
eval 'use Test::Pod';
my $have_testpod = !$@ and $Test::Pod::VERSION >= 0.95;
print "have_testpod='$have_testpod'\n";
print "tpv=", $Test::Pod::VERSION, "\n";
# perl -w sch.pl
Useless use of numeric ge (>=) in void context at sch.pl line 3.
have_testpod='1'
tpv=0.94
# perl -MO=Deparse -e \
> 'my $have_testpod = !$@ and $Test::Pod::VERSION >= 0.95'
$Test::Pod::VERSION >= 0.95 if my $have_testpod = !$@;
-e syntax OK
>> Based on the excellent work from Lester & Schwern, I could not restrain
>> myself from shortening this a little more (since it will be included
>> in many distributions).
>
> The logic escapes me. Clarity is more important than length if you're
> going to be sticking this code all over the place.
I'm not going to pretend it's rational, but for some reason I feel more
comfortable with cut n' pasting if it's only a small amount of code.
This reminds me of the many recent discussions re the merit of:
$s = do { local $/; <$fh> };
versus using File::Slurp. Psychologically, it may be easier to justify
cut n' pasting if you can say "oh, it's just a one-liner".
> But if we're going to encourage people to copy this code, Test::Pod
> should probably just have a subroutine to do this for you. That's
> what libraries are for!
I hope Andy is listening. ;-)
Yes, I agree it'd be nice for Test::Pod to provide a little more help
for this very common chore for CPAN module authors. I do feel most
uncomfortable cut n' pasting this code all over the place.
/-\
http://personals.yahoo.com.au - Yahoo! Personals
New people, new possibilities. FREE for a limited time.