2010-06-11 7 views
3

J'essaie de faire un didacticiel simple, mais j'ai des difficultés à démarrer. Mon problème semble être l'installation et obtenir le bon chemin vers les modules.Ajout d'un chemin d'inclusion pour un module dans un didacticiel Perl simple

** 1. Voici le code d'origine: *****

#!/usr/bin/perl -w 
use strict; 
use LWP 5.64; 

my $browser = LWP::UserAgent->new; 
my $url = 'http://www.cspan.org/RECENT.html'; 
my $response = $browser->get($url); 

die "Can't get $url -- ", $response->status_line 
    unless $response->is_success; 

my $html = $response->content; 
while($html =~m/<A HREF=\"(.*?)\"/g) { 
    print "$1\n"; 

2. Mais dans Host Gator ils disent ceci:

emplacement de votre Perl Module (s)

Chemin:/home/d ******** n/perl

Utilisation de votre Perl Module (s)

Vous devrez ajouter/home/d ******** n/perl à la inclure le chemin. Vous pouvez le faire en ajoutant le code suivant à votre script:

BEGIN { 
    my $base_module_dir = (-d '/home/d********n/perl' ? '/home/d********n/perl' : (getpwuid($>))[7] . '/perl/'); 
    unshift @INC, map { $base_module_dir . $_ } @INC; 
} 

3. J'ajouté le code, mais ont aucune idée si je l'ai ajouté au bon endroit.

#!/usr/bin/perl -w 
use strict; 
use LWP 5.64; 

BEGIN { 
    my $base_module_dir = (-d '/home/d********n/perl' ? 

'/home/d********n/perl' : (getpwuid($>))[7] . '/perl/'); 
    unshift @INC, map { $base_module_dir . $_ } @INC; 
} 


my $browser = LWP::UserAgent->new; 
my $url = 'http://www.cspan.org/RECENT.html'; 
my $response = $browser->get($url); 

die "Can't get $url -- ", $response->status_line 
    unless $response->is_success; 

my $html = $response->content; 
while($html =~m/<A HREF=\"(.*?)\"/g) { 
    print "$1\n"; 

Toute aide serait grandement appréciée.

Pour votre information, je l'ai déjà fait que le fichier dispose des autorisations nécessaires 755

également LWP :: UserAgent l'a un certain nombre de 5.835 dans Host Gator. Est-ce que cela signifie que je dois changer

utiliser LWP 5.64;

à

utilisation LWP 5,835

+0

Je suis heureux de vous voir été en mesure d'obtenir ce posté . –

Répondre

3

En supposant que vous avez installé LWP dans votre répertoire de module local, placez le bloc BEGINavant vous essayez de charger LWP (juste après use strict).

Le numéro de version dans le code d'origine indique qu'il s'agit de la version minimale requise. Puisque vous avez une version plus récente et que l'interface de LWP est stable, un simple use LWP; suffira.

+1

S'il adapte le script de quelqu'un d'autre, ce 5.64 est là pour une raison. Pourriez-vous au moins mentionner que c'est une version minimale requise dans votre réponse? – ysth

+0

@ysth, vous l'avez, mec. – friedo

+0

Mais pour répondre à sa question, il n'a pas besoin de chnage le numéro de version. Il aurait été plus clair si le tutoriel original disait 'utiliser LWP 5.64; # Nous avons besoin de la version 5.64 ou plus récente' – justintime

2

La solution Host Gator semble un peu compliquée. J'utilise le module lib:

use strict ; 
use lib '/home/d********n/perl' ; 
use LWP ; 

Si vous exécutez le script à partir d'une ligne de commande, il y a deux façons dont vous pouvez l'exécuter sans changement.

ensemble comme une variable d'environnement en tapant suivant à la ligne de commande:

export PERL5LIB=/home/d********n/perl 
myscript.pl 

ou l'ajouter en option au perl commaind

perl -I/home/d********n/perl myscript.pl 
+0

Merci, j'ai essayé la première option, mais cela n'a pas fonctionné: http://wildxtremes.com/cgi-bin/Tutorial14f.cgi Les 2 autres options sont bien au-dessus de ma tête. Pouvez-vous expliquer où ils seraient placés dans le code? Merci encore – Dennis

+0

Aussi le cgi-bin n'est pas dans le répertoire racine, il est dans un sous-répertoire pour un autre site web, cela pourrait-il changer le chemin d'inclusion? – Dennis

+0

Pouvez-vous nous donner un peu plus de détails qui "n'ont pas fonctionné". Si exécuté à partir de la ligne de commande, quel est le message d'erreur produit. S'il s'agit d'un script CGI, qu'est-ce qui est écrit dans le journal du serveur? – justintime