Thanks all, here comes the update one:

#!/usr/bin/env perl

use strict;
use warnings;
use Carp qw(croak);
use autodie qw(open close);
use File::Basename;

croak "Usage: ./bibextract.pl tex_file.tex" unless defined $ARGV[0];

my $infile = $ARGV[0];

my $tex_file = $infile;
#my $bib_filename = "/home/lina/texmf/bibtex/bib/biophymd.bib";
my $bib_filename = "try.bib";
my $bib_abbrev_filename = "/home/lina/texmf/bibtex/bib/biophyabbrev.bib";
my $extracted_bib = "basename($infile).bib";
my $cited;
my @citeditems;
my $item;


## read all the cited items from .tex file and save it to $cited
open my $fh, '<', $tex_file;
while(<$fh>){
        if(/cite\{(\S+)\}/){
                $cited = sprintf "%s\n",$1;
                $cited =~ tr/\,/\n/;           ########### the problem is here. 
it
failed to split this to different element in the array @citeditems.
                push(@citeditems,$cited);
                }
}
close($fh);


## read the .bib database and extract the cited out
open my $fh2, '<', $bib_filename;

foreach $item (@citeditems){
        print $item;
        #match($item);
        #print "a\n";
        }
        
sub match{
        my $reg = @_;
        LINE: while(my $line = <$fh2>){

                if ($line =~ m/$reg\,/ .. $line =~ /^\}$/){  ######## thanks 
Tim and
David's suggestion in another thread. I rechecked it worked.
                        print $line;
                #last;
                }
        

        }
}

-- 
To unsubscribe, e-mail: beginners-unsubscr...@perl.org
For additional commands, e-mail: beginners-h...@perl.org
http://learn.perl.org/


Reply via email to