Re: findnode() results in Invalid Expression only on non-self-compiled perl
[email protected] (Adam Kennedy) Thu, 10 Jan 2008 01:04:30 +1100
| Newsgroups | perl.cpan.discuss |
|---|---|
| Message-ID | <[email protected]> |
RedHat :)
So the problem here typically is that SOME Perl distribution maintainers
like to apply the occasional non-standard bleadperl patches to their
release, and then version it the same as the regular one.
This results in bugs (I had to update 9 CPAN modules the week after I
first got access to a RHEL 4 Update 1 machine).
I know for a fact there's still some bizarre thread bugs hidden in some
versions of RedHat Enterprise Linux 4 that cause Test::More to fail its
tests.
At my company we've just plain given up on RHEL 4 and we're moving to 5
to try to avoid them.
If you are having troubles with a vendor-screwed-up Perl version, my
main recommendation would be to build your /opt/perl and use that for
your application.
Alternatively, if you have formal support contracts with those vendors
PLEASE file formal bug reports. It's one of the few weapons we have to
push them to not pull this crap.
Adam K
Harald Häntsch (Cenix Bioscience GmbH) wrote:
> Hello,
>
> I'm a bit new to perl, but I think I'm experiencing a very strange
> behavior in perl.
> findnodes() gives me an Invalid expression only on perl which comes with
> the distribution on SuSE 10.3, RHEL4 and RHEL 5.1.
>
> But if I compile the entire perl by myself it doesnt occur and works
> just find.
> I tried with different versions of perl and XML-Lib but no difference.
>
> Here is the code:
>
> #!/usr/bin/perl -w
> use strict;
> use XML::LibXML;
> use Getopt::Std;
> use vars qw/$opt_x/;
>
> { # main
>
> my $parser = XML::LibXML->new();
> my $usercfg = $parser->parse_file('./user.cfg');
> my $mailcfg = $parser->parse_file('./server.cfg');
> my $uroot = $usercfg->documentElement;
> my $mroot = $mailcfg->documentElement;
>
> my @unodes = $uroot->findnodes('./');
> my @mnodes = $mroot->findnodes('./');
>
>
> The different config show this:
> /usr/bin/perl -V (Distribution:
>
> Summary of my perl5 (revision 5 version 8 subversion 5) configuration:
> Platform:
> osname=linux, osvers=2.6.9-55.0.9.elsmp,
> archname=i386-linux-thread-multi
> uname='linux hs20-bc1-5.build.redhat.com 2.6.9-55.0.9.elsmp #1 smp
> tue sep 25 02:16:15 edt 2007 i686 i686 i386 gnulinux '
> config_args='-des -Doptimize=-O2 -g -pipe -m32 -march=i386
> -mtune=pentium4 -Dversion=5.8.5 -Dmyhostname=localhost
> -Dperladmin=root@localhost -Dcc=gcc -Dcf_by=Red Hat, Inc.
> -Dinstallprefix=/usr -Dprefix=/usr -Darchname=i386-linux
> -Dvendorprefix=/usr -Dsiteprefix=/usr -Duseshrplib -Dusethreads
> -Duseithreads -Duselargefiles -Dd_dosuid -Dd_semctl_semun -Di_db
> -Ui_ndbm -Di_gdbm -Di_shadow -Di_syslog -Dman3ext=3pm -Duseperlio
> -Dinstallusrbinperl -Ubincompat5005 -Uversiononly -Dpager=/usr/bin/less
> -isr -Dinc_version_list=5.8.4 5.8.3 5.8.2 5.8.1 5.8.0'
> hint=recommended, useposix=true, d_sigaction=define
> usethreads=define use5005threads=undef useithreads=define
> usemultiplicity=define
> useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
> use64bitint=undef use64bitall=undef uselongdouble=undef
> usemymalloc=n, bincompat5005=undef
> Compiler:
> cc='gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING
> -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE
> -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
> optimize='-O2 -g -pipe -m32 -march=i386 -mtune=pentium4',
> cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBUGGING -fno-strict-aliasing
> -pipe -I/usr/local/include -I/usr/include/gdbm'
> ccversion='', gccversion='3.4.6 20060404 (Red Hat 3.4.6-8)',
> gccosandvers=''
> intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
> ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
> lseeksize=8
> alignbytes=4, prototype=define
> Linker and Libraries:
> ld='gcc', ldflags =' -L/usr/local/lib'
> libpth=/usr/local/lib /lib /usr/lib
> libs=-lresolv -lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lc
> perllibs=-lresolv -lnsl -ldl -lm -lcrypt -lutil -lpthread -lc
> libc=/lib/libc-2.3.4.so, so=so, useshrplib=true, libperl=libperl.so
> gnulibc_version='2.3.4'
> Dynamic Linking:
> dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E
> -Wl,-rpath,/usr/lib/perl5/5.8.5/i386-linux-thread-multi/CORE'
> cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
>
>
> Characteristics of this binary (from libperl):
> Compile-time options: DEBUGGING MULTIPLICITY USE_ITHREADS
> USE_LARGE_FILES PERL_IMPLICIT_CONTEXT
> Built under linux
> Compiled at Oct 22 2007 16:12:50
>
>
> /usr/local/bin/perl -V (self compiled)
> Summary of my perl5 (revision 5 version 8 subversion 7) configuration:
> Platform:
> osname=linux, osvers=2.6.9-42.0.3.elsmp, archname=i686-linux
> uname='linux pony.cenix-bioscience.com 2.6.9-42.0.3.elsmp #1 smp mon
> sep 25 17:28:02 edt 2006 i686 athlon i386 gnulinux '
> config_args=''
> hint=recommended, useposix=true, d_sigaction=define
> usethreads=undef use5005threads=undef useithreads=undef
> usemultiplicity=undef
> useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
> use64bitint=undef use64bitall=undef uselongdouble=undef
> usemymalloc=n, bincompat5005=undef
> Compiler:
> cc='cc', ccflags ='-fno-strict-aliasing -pipe -I/usr/local/include
> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/gdbm',
> optimize='-O2',
> cppflags='-fno-strict-aliasing -pipe -I/usr/local/include
> -I/usr/include/gdbm'
> ccversion='', gccversion='3.4.6 20060404 (Red Hat 3.4.6-3)',
> gccosandvers=''
> intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
> ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
> lseeksize=8
> alignbytes=4, prototype=define
> Linker and Libraries:
> ld='cc', ldflags =' -L/usr/local/lib'
> libpth=/usr/local/lib /lib /usr/lib
> libs=-lnsl -lgdbm -ldb -ldl -lm -lcrypt -lutil -lc
> perllibs=-lnsl -ldl -lm -lcrypt -lutil -lc
> libc=/lib/libc-2.3.4.so, so=so, useshrplib=false, libperl=libperl.a
> gnulibc_version='2.3.4'
> Dynamic Linking:
> dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
> cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
>
>
> Characteristics of this binary (from libperl):
> Compile-time options: USE_LARGE_FILES
> Built under linux
> Compiled at Oct 11 2006 02:59:09
>
> It would be great if someone could pojnt me in the right direction. I
> would like to use the script on several machines and therefore dont like
> to compile perl everytime.
>
>