"Dr. David Kirkby" <david.kir...@onetel.net> writes:

> I'm trying to check if the version of perl is at least x.y.z
>
> I found a macro with this syntax.
>
> AX_PROG_PERL_VERSION([VERSION],[ACTION-IF-TRUE],[ACTION-IF-FALSE])
>
> http://www.nongnu.org/autoconf-archive/ax_prog_perl_version.html
>
> The documentation says one needs to run AC_CHECK_PROG or AC_PATH_PROG
> first, so $PERL is set to the path to perl. But it keeps failing on me:
>
> AC_PATH_PROG([PERL],[perl])
> AX_PROG_PERL_VERSION([5.8.0],[],[])

That macro is using a questionable technique to accomplish this (parsing
the output of perl -v and then relying on AX_COMPARE_VERSION).  Here's a
much simpler macro that accomplishes the same thing:

AC_DEFUN([AX_PROG_PERL_VERSION],
[AC_CACHE_CHECK([for Perl version $1 or later], [ax_cv_prog_perl_version],
    [AS_IF(["$PERL" -e 'require $1;' >/dev/null 2>&1], [$1], [$2])])])

This uses Perl's built-in require command, which supports 5.8.0-style
version numbers and always does the right ordering check.  (Although you
may want to use 5.008 for backward compatibility with pre-5.6 versions of
Perl.)

There's some room for improvement in that check since the cache variable
used doesn't vary based on the version number of Perl desired, so it won't
work properly if invoked more than once with different versions.  This is
based on a macro that I'm currently using, but I rewrote it a bit to use a
more modern idiom and haven't tested the version above, so it's possible
there are stupid typos.

-- 
Russ Allbery (r...@stanford.edu)             <http://www.eyrie.org/~eagle/>


_______________________________________________
Autoconf mailing list
Autoconf@gnu.org
http://lists.gnu.org/mailman/listinfo/autoconf

Reply via email to