script Perl " strisciare " attraverso il web , spulciando tra l'oceano di pagine HTML per le informazioni , e, inevitabilmente, incontrano alcuni dei milioni di file Adobe Acrobat PDF spruzzato su Internet. Anche se sono pronti per la stampa e attraente , dal punto di vista di un web crawler , i PDF sono un dado leggermente più difficile da decifrare , di pagine HTML basati su testo semplice . Per fortuna , come con molte attività web , vi è un modulo Perl che può contribuire a rendere la vita più facile : CAM :: PDF . Questa interfaccia di programmazione , anche se per lo più destinati a creare e manipolare file PDF , ha alcuni programmi di utilità che consente di script per cercare il loro contenuto . Cose che ti serviranno 
 scripting Perl ambientaliste CAM :: PDF Perl modulo 
 Testo o codice editor di file PDF  
 Mostra più istruzioni 
 1 < p > Installa CAM :: PDF . L'utilità CPAN offre il modo più semplice per farlo - avviare CPAN nella riga di comando e al prompt , digitare " install CAM :: PDF " (senza virgolette ) economici 2 
 Aprire un editor e . avviare lo script , inserendo le seguenti righe per avviare l'interprete Perl e importare il modulo necessario : 
 
 # /usr /bin /perluse CAM :: PDF ; 
 
 Aggiungere le due righe successive a! elaborare gli argomenti della riga di comando che l'utente passerà in : 
 
 mio $ file = shift; my $ ricerca = shift; 
 
 il primo argomento passato allo script sarà il nome di un file PDF . file e il secondo , la stringa di ricerca 
 3 
 Creare un nuovo oggetto CAM :: PDF aggiungendo la seguente riga allo script : 
 
 my $ doc = CAM :: PDF - > new ( $ file) ; 
 
 Usando il metodo NumPages del modulo importato per definire il limite superiore , creare un ciclo per elaborare ogni pagina del documento : 
 
 foreach my $ p ( ( 1 .. $ doc -> NUMPAGES ( ) ) ) { 
 4 
 All'interno del ciclo , aggiungere questa riga per avere ogni pagina di testo dal file PDF : 
 < p > my $ str = $ doc- > getPageText ( $ p ) ; 
 
 aggiungere l'istruzione di script seguente per dividere il testo della pagina in una molteplicità di linee separate : 
 
 @ righe = split ( /\\ n /, $ str ) ; 
 
 Termina l'istruzione ciclica inserendo una parentesi di chiusura : 
 
 } 
 5 
 Infine, aggiungere un altro anello alla lo script per elaborare ogni riga della pagina e cercare una corrispondenza per la stringa di ricerca dell'utente come una espressione regolare . Se l'espressione regolare restituisce una partita , questo esempio stamperà la relativa riga e il numero di pagina a stdout . Al posto di queste istruzioni di stampa , è necessario implementare il codice per elaborare i risultati in base alle esigenze 
 
 my $ i = 0; . Foreach $ line ( @ righe) { + + $ i ; if ( $ linea = ~ /$ search /) { print " \\ " $ ricerca \\ "che si trova in linea $ i di pagina $ p \\ n"; print " $ riga \\ n \\ n" } }