変数hostname、portnumberを別の変数に呼び出すPerlコード

#!/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;
    }
}

上記のperlコードでは、$ job_nameを別の変数$ url_aにコールしています。 しかし、私は次のエラーが発生しています。

404 Not Found at health.pl line 25.

誰かがこれで私を助けてくれますか?ありがとう。

1
nl ru de
@ F.Hauriは正しいです。あなたのコードは私のためにも機能します。質問を編集し、その後ろの行を追加してください。 strictwarnings を使用していますか?
追加された 著者 simbabque,
この部分は私のためにかなり良いようです。したがって、2つの可能性があります:.1エラーが次の行にあります(あなたの質問にもっと多くの行を表示するかもしれません).2あなたのperlのインストールがうまく完了していないか間違っています。
追加された 著者 F. Hauri,
404 Not Found の意味:構築されたURLが少なくとも存在しません:http:// myhost:8080/job/Integrity/api/xml (サンプル用)は有効なURLですか?
追加された 著者 F. Hauri,
25行目の printf STDERR "ERROR:%s \ n"、$ response-> status_line;die $ response-> status_line; を変更してみてください。
追加された 著者 F. Hauri,
$ url_a = ... は、引用符 'を二重引用符で "変更してください!
追加された 著者 F. Hauri,
私はこれを答えとして掲示しました。もし彼らが働いていれば、それらを検証することができます;-)
追加された 著者 F. Hauri,
15行目をもっときれいに書き換えました。( join を使って)見てみましょう!
追加された 著者 F. Hauri,
ありがとう@ F.Hauri ,.私は完全なコードで質問を更新しました。
追加された 著者 MangeshBiradar,
はいURL リンクは正しいです。実際にはエラーが発生する可能性があります:my $ url_a = ' myhost:8080/job/$ job_name/api/xml&#39 ;; $ job_nameは$ url_aにその値を代入しません。
追加された 著者 MangeshBiradar,
完璧な... !! :-)。ありがとう@ F.Hauriそれは働いた..
追加された 著者 MangeshBiradar,

1 答え

このバージョンをお試しください:

#!/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
追加された
ありがとう@ F.Hauri。
追加された 著者 MangeshBiradar,