Perl-scripts " kravle " på tværs af internettet, sigtning gennem det hav af HTML-sider for information, og uundgåeligt støde på nogle af de millioner af Adobe Acrobat PDF -filer drysses over internettet. Selvom de er klar til at udskrive og attraktivt, fra synspunkt en web crawler, PDF-filer er en lidt hårdere nød at knække end simple, tekstbaserede HTML-sider. Heldigvis som med mange web- opgaver , er der en Perl modul, der kan bidrage til at gøre livet lettere : CAM :: PDF. Denne programming interface , selvom det meste beregnet til at oprette og manipulere PDF-filer , har nogle hjælpeprogrammer, der gør det muligt for scripts til at søge i deres indhold. Ting du skal
Perl scripting miljø
CAM :: PDF Perlmodul
Text eller kode editor
PDF-fil
Vis Flere Instruktioner
1 < p > Installer CAM :: PDF. CPAN hjælpeprogram giver den nemmeste måde at gøre dette - start CPAN på kommandolinjen og ved du skrive " install CAM :: PDF" (uden anførselstegn)
2
Åbn en redaktør og . starte scriptet , at indtaste de følgende linjer at starte Perl tolk og importere det nødvendige modul :
# /usr /bin /perluse CAM :: pdf;
Tilføj de næste to linjer til ! behandle kommandolinjeargumenter at brugeren vil passere i :
min $ file = skift; min $ search = skift;
det første argument videre til scriptet bliver navnet på en PDF . fil og den anden , søgestrengen
3
Opret en ny CAM :: PDF objekt ved at tilføje følgende linje til scriptet : Hej
min $ doc = CAM :: PDF -> new ( $ file ) ;
Brug den importerede modulets NUMPAGES metode til at definere den øvre grænse , skal du oprette en løkke til at behandle hver side i dokumentet : Hej
foreach min $ p ( ( 1 .. $ doc -> NUMPAGES ( ))) {
4
Inden for loop, tilføje denne linie for at få hver enkelt side af tekst fra PDF-filen : Hej < p> min $ str = $ doc -> getPageText ( $ p)
Tilføj den næste script erklæring at opdele sidens tekst op i en vifte af separate linjer : Hej
@ linjer = split ( /\\ n /, $ str ),
Afslut løkken erklæring ved at indtaste en afsluttende beslag : Hej
}
5
sidst tilføje en anden sløjfe til scriptet til at behandle hver linje på siden og søge en match for brugerens søgestreng som et regulært udtryk . Hvis det regulære udtryk returnerer en match, dette eksempel udskriver linje og sidetal til stdout . I stedet for disse trykte udsagn , bør du implementere koden til at behandle resultaterne efter behov
min $ i = 0; . Foreach $ line ( @ linier) { + + $ i; if ($ line = ~ /$ search /) { print " \\ " $ search \\ "fundet på linje $ i af siden $ p \\ n"; print " $ line \\ n \\ n" }}
< br >