Perl scripts " kruipen " op het web , zeven door de oceaan van HTML-pagina's voor informatie en onvermijdelijk geconfronteerd met een aantal van de miljoenen Adobe Acrobat PDF-bestanden die verspreid liggen in het internet . Hoewel ze klaar zijn om af te drukken en aantrekkelijk , vanuit het oogpunt van een webcrawler , PDF's zijn een iets hardere noot om te kraken dan eenvoudige , op tekst gebaseerde HTML-pagina's . Gelukkig , zoals bij veel web taken , is er een Perl module die kan helpen het leven gemakkelijker maken : CAM :: PDF . Dit programming interface , zij het meestal bedoeld om te creëren en manipuleren van PDF-bestanden , heeft een aantal hulpprogramma's die scripts in staat stelt om hun content te zoeken . Wat je nodig hebt Perl scripting omgeving CAM :: PDF Perl module tekst of code-editor PDF-bestand Toon Meer Aanwijzingen 1 Installeren cAM :: PDF . De cpan hulpprogramma biedt de eenvoudigste manier om dit te doen - beginnen cpan op de commandoregel en achter de prompt , type " install CAM :: PDF " ( zonder aanhalingstekens ) kopen van 2 Open een editor en . start het script , het invoeren van de volgende regels toe aan de Perl-interpreter starten en importeert de benodigde module : # /usr /bin /perluse cAM :: PDF ; Voeg de volgende twee regels aan ! verwerken de command line argumenten die de gebruiker zal passeren in : mijn $ file = shift; mijn $ search = shift; het eerste argument dat wordt doorgegeven aan het script zal de naam van een PDF te zijn . bestand , en de tweede , de zoekstring 3 Maak een nieuwe cAM :: PDF-object door het toevoegen van de volgende regel aan het script : mijn $ doc = cAM :: PDF - > new ( $ file ) ; behulp NUMPAGES methode de geïmporteerde module om de bovengrens definiëren , maak een lus aan elke pagina van het document te verwerken : foreach mijn $ p ( ( 1 .. $ doc - > NUMPAGES ( ) ) ) { 4 Binnen de lus , voeg deze regel toe aan elke pagina van de tekst uit het PDF-bestand : my $ str = $ doc - > getPageText ( $ p ) ; Voeg het volgende script verklaring aan de tekst van de pagina 's opgesplitst in een reeks van afzonderlijke lijnen : @ lijnen = split ( /\\ n /, $ str ) ; Beëindig de lus verklaring van het invoeren van een closing bracket : } 5 voeg ten slotte nog een lus te het script om elke regel van de pagina te verwerken en zoeken naar een match voor de gebruiker zoekstring als een reguliere expressie . Als de reguliere expressie retourneert een wedstrijd , dit voorbeeld drukt de lijn en paginanummer naar stdout . In plaats van deze af te drukken uitspraken , moet je code uitvoeren om de resultaten zo nodig verwerken mijn $ i = 0 ; . Foreach $ lijn ( @ lijnen ) { + + $ i ; if ( $ lijn = ~ /$ search /) { print " \\ " $ search \\ " gevonden in regel $ i van de pagina $ p \\ n " ; print " $ \\ n \\ n " } } < br > |