Skip Menu |

This queue is for tickets about the Text-BibTeX CPAN distribution.

Report information
The Basics
Id: 40919
Status: rejected
Priority: 0/
Queue: Text-BibTeX

People
Owner: Nobody in particular
Requestors: frank.wiegand [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: 0.37
Fixed in: (no value)



Subject: (wrong) bibtex parsing error/fatal error
The following script causes strange error messages: $ cat test.pl #!/usr/bin/perl use warnings; use strict; use Text::BibTeX; my $bibtex = 'bibtex-bug.bib'; my @pdflist = ( 'Hartmann___Globale_Medienkultur', 'Flusser___Medienkultur', 'Hartree___Calculating_Machines_and_Calculating_Instruments_and_Machines', ); foreach my $pdf (@pdflist) { find($bibtex, lc $pdf); } sub find { my ($bibtex, $pdf) = @_; my $bibfile = Text::BibTeX::File->new( $bibtex ) or die "Could not open '$bibtex': $!"; while( my $entry = Text::BibTeX::Entry->new( $bibfile ) ) { next unless $entry->parse_ok; my $author = ($entry->names('author'))[0]; if ( $author ) { ($author) = $author->part('last'); } else { ($author) = ($entry->names('editor'))[0]->part('last'); } my $title = $entry->get('title') || ''; if ( $pdf =~ /\Q$author\E___\Q$title\E/i ) { return 1; } } } __END__ $ perl test.pl invalid token near line 11 (text was '@') bibtex-bug.bib, line 11, syntax error: found "ook", expected one of: start of entry ("{" or "(") or quoted string ({...} or "...") If I modify the attached bibtex-bug.bib (e.g. remove the 4th line [publisher = {...}]), then I get another strange error message: $ perl test.pl fatal error: bt_parse_entry: you can't interleave calls across different files Yes, the script not very minimal, but every try to minimize it did *not* throw the error message. I couldn't test Text-BibTeX 0.38, because it does not compile on i86_64 (see #40675) and had to use the packages provided by my linux distribution (Debian GNU/Linux - testing). Please let me know if you have ideas to minimize my test script to catch this annoying bug. Thanks, Frank $ perl -V Summary of my perl5 (revision 5 version 10 subversion 0) configuration: Platform: osname=linux, osvers=2.6.22-3-vserver-amd64, archname=x86_64-linux-gnu-thread-multi uname='linux excelsior 2.6.22-3-vserver-amd64 #1 smp tue feb 12 10:01:41 utc 2008 x86_64 gnulinux ' config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.10 -Darchlib=/usr/lib/perl/5.10 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.10.0 -Dsitearch=/usr/local/lib/perl/5.10.0 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.10.0 -Dd_dosuid -des' hint=recommended, useposix=true, d_sigaction=define useithreads=define, usemultiplicity=define useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef use64bitint=define, use64bitall=define, uselongdouble=undef usemymalloc=n, bincompat5005=undef Compiler: cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', optimize='-O2 -g', cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fno-strict-aliasing -pipe -I/usr/local/include' ccversion='', gccversion='4.3.2', gccosandvers='' intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16 ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8 alignbytes=8, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib /lib64 /usr/lib64 libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt perllibs=-ldl -lm -lpthread -lc -lcrypt libc=/lib/libc-2.7.so, so=so, useshrplib=true, libperl=libperl.so.5.10.0 gnulibc_version='2.7' Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E' cccdlflags='-fPIC', lddlflags='-shared -O2 -g -L/usr/local/lib' Characteristics of this binary (from libperl): Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES USE_PERLIO USE_REENTRANT_API Built under linux Compiled at Nov 2 2008 07:32:27 %ENV: PERL_AUTOINSTALL="--defaultdeps" PERL_EXTUTILS_AUTOINSTALL="--defaultdeps" PERL_MM_USE_DEFAULT="1" @INC: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .
Subject: bibtex-bug.bib
@book{flusser:2005, author = {Flusser, Vilem}, title = {Medienkultur}, publisher = {a publisher}, LIBRARY = {}, YEAR = {2005}, ANNOTE = {none} } @collection{folkerts+etal:1989, editor = {Folkerts, Menso and Knobloch, Eberhard and Reich, Karin}, TITLE = {Mass, Zahl und Gewicht.}, PUBLISHER = {VCH, Acta Humanoria [u.a.]}, ADDRESS = {Weinheim [u.a.]}, SERIES = {Ausstellungskataloge der Herzog August Bibliothek }, VOLUME = {60}, PAGES = {}, ADDENDUM = {Vorwort und Einleitung}, YEAR = {1989}, ANNOTE = {none} }
Subject: test.pl
#!/usr/bin/perl use warnings; use strict; use Text::BibTeX; my $bibtex = 'bibtex-bug.bib'; my @pdflist = ( 'Hartmann___Globale_Medienkultur', 'Flusser___Medienkultur', 'Hartree___Calculating_Machines_and_Calculating_Instruments_and_Machines', ); foreach my $pdf (@pdflist) { find($bibtex, lc $pdf); } sub find { my ($bibtex, $pdf) = @_; my $bibfile = Text::BibTeX::File->new( $bibtex ) or die "Could not open '$bibtex': $!"; while( my $entry = Text::BibTeX::Entry->new( $bibfile ) ) { next unless $entry->parse_ok; my $author = ($entry->names('author'))[0]; if ( $author ) { ($author) = $author->part('last'); } else { ($author) = ($entry->names('editor'))[0]->part('last'); } my $title = $entry->get('title') || ''; if ( $pdf =~ /\Q$author\E___\Q$title\E/i ) { return 1; } } }
I get the same behavior with or without the 4th line, and the behavior is correct (although not clear). There isn't a @collection type under BibTeX, but a @inCollection. Hope that helps. Sorry for the delay :$ Alberto