Perl-Code zum Aufruf von Variablen Hostname, Portnummer in eine andere Variable

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use XML::Twig;
use HTTP::Request;

my @joblist = ('Testing','Integrity','TEST','Team_test','test','TEST_1','Update_Outlook');
my @score;

foreach my $job_name (@joblist) {
    my $url_a = 'http://myhost:8080/job/$job_name/api/xml';
    my $ua = LWP::UserAgent->new;
    $ua->timeout(10);
    $ua->env_proxy;
    my $response = $ua->get($url_a);
    if ($response->is_success) {
        my $content = $response->decoded_content;  # or whatever
        XML::Twig->new( twig_roots => { 'healthReport/score' => sub { push @score, $_->text; } }) ->parseurl($url_a);
        foreach my $var (@score) {
            print "$var \n";
        }
    }
    else {
        die $response->status_line;
    }
}

Im obigen Perl-Code rufe ich $ job_name in eine andere Variable $ url_a auf. Aber ich bekomme folgenden Fehler.

404 Not Found at health.pl line 25.

Könnte mir bitte jemand dabei helfen. Danke.

1
nl ja ru
@ F.Hauri ist richtig. Dein Code funktioniert auch für mich. Bitte bearbeiten Ihre Frage und fügen Sie die folgenden Zeilen hinzu. Verwenden Sie strict und Warnungen ?
hinzugefügt der Autor simbabque, Quelle
Dieser Teil scheint für mich ziemlich gut zu sein. Also gibt es zwei Möglichkeiten: .1 Fehler befindet sich in einigen nächsten Zeilen (Sie können mehr Zeilen in Ihrer SO Frage drucken) .2 Ihre Perl-Installation ist nicht gut abgeschlossen oder falsch.
hinzugefügt der Autor F. Hauri, Quelle
Hmmm Frage hat sich geändert: 404 Nicht gefunden bedeutet: Mindestens eine konstruierte URL existiert nicht : Sind Sie sicher http://myhost: 8080/job/Integrität/api/xml (für Beispiel) ist eine gültige URL?
hinzugefügt der Autor F. Hauri, Quelle
Versuchen Sie einfach, die $ response-> status_line; durch printf STDERR "FEHLER:% s \ n", $ response-> status_line; in Zeile 25 zu ändern.
hinzugefügt der Autor F. Hauri, Quelle
Ok, ich habe dein Problem gefunden: In Zeile 15: $ url_a = ... ändere die Anführungszeichen ' durch doppelte Anführungszeichen "!
hinzugefügt der Autor F. Hauri, Quelle
Ich habe dies als Antwort gepostet, damit Sie sie validieren können, wenn sie funktionieren ;-)
hinzugefügt der Autor F. Hauri, Quelle
Ich habe Zeile 15 hübscher umgeschrieben, (mit join ) schau mal rein!
hinzugefügt der Autor F. Hauri, Quelle
Danke @ F.Hauri ,. Ich habe die Frage mit vollem Code aktualisiert.
hinzugefügt der Autor MangeshBiradar, Quelle
Ja Die URL Link ist korrekt. Eigentlich könnte der Fehler hier sein: my $ url_a = ' myhost: 8080/job/$ job_name/api/xml & # 39 ;; $ job_name ersetzt seinen Wert nicht in $ url_a.
hinzugefügt der Autor MangeshBiradar, Quelle
perfekt...!! :-) Danke @ F.Hauri es hat geklappt ..
hinzugefügt der Autor MangeshBiradar, Quelle

1 Antworten

Probieren Sie diese Version aus:

#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use XML::Twig;
use HTTP::Request;

my @joblist = qw|Testing Integrity TEST Team_test test TEST_1 Update_Outlook|;
my @score;

foreach my $job_name (@joblist) {
    my $url_a = join("/","http://myhost:8080/job",$job_name,"api/xml");
    my $ua = LWP::UserAgent->new;
    $ua->timeout(10);
    $ua->env_proxy;
    my $response = $ua->get($url_a);
    if ($response->is_success) {
        my $content = $response->decoded_content;  # or whatever
        XML::Twig->new( twig_roots => { 'healthReport/score' => sub { push @score, $_->text; } }) ->parseurl($url_a);
        foreach my $var (@score) {
            print "$var \n";
        }
    }
    else {
        printf STDERR "ERROR job: %s, result: %s\n", 
        $job_name, $response->status_line;
    }
}
1
hinzugefügt
Danke @ F.Hauri.
hinzugefügt der Autor MangeshBiradar, Quelle