Perl und Regex

Bash, Shell, PHP, Python, Perl, CGI
greenrover
Posts: 203
Joined: 2004-12-17 19:34

Perl und Regex

Post by greenrover » 2008-04-02 17:40

Hallo, ich bin sonst PHP Programmierer und habe mich dieses mal mit Perl probieren müssen:

Aufruf des Scriptes:

Code: Select all

./check_graph_apache.pl -u http://www.server.de/server-status
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 74555    0 74555    0     0   416k      0 --:--:-- --:--:-- --:--:--  622k
OK - request:16 idle:32


Das Problem ist: Eigentlich ist nur die letzte Zeile als Ausgabe erwünscht.

Codeauszug:

Code: Select all

my $result = `curl $opt_u`;

$_ = $result;
m/([0-9]+) requests currently being processed, ([0-9]+) idle servers/;
my $requests = $1;
my $idle     = $2;

......

 print "OK - request:$requests idle:$idlen";
 exit $ERRORS{'OK'};


Ich Vermute das Problem beim Regex in Zeile 4 ... kann mir da Jemand weiterhelfen?

greenrover
Posts: 203
Joined: 2004-12-17 19:34

Re: Perl und Regex

Post by greenrover » 2008-04-02 18:26

Habe jetzt herausgefunden, das es am curl Aufruf liegt, jedoch verstehe ich die Funktion von perl einfach nicht.
Wieso gibt der ein Teil auf die Console zurück? Macht doch keinen Sinn.

Mit:

Code: Select all

my $curl = new WWW::Curl::Easy;
##$curl->setopt(CURLOPT_HEADER,1);
##$curl->setopt(CURLOPT_RETURNTRANSFER,1);
$curl->setopt( CURLOPT_HTTPGET,        1 );
$curl->setopt( CURLOPT_NOPROGRESS,     1 );
$curl->setopt( CURLOPT_VERBOSE,        0 );
$curl->setopt(CURLOPT_URL, $opt_u);
if ($curl->perform != 0) {
 print "CRITICAL - no connectionn";
 exit $ERRORS{'CRITICAL'};
}
my $result = $curl->getinfo(CURLINFO_HTTP_CODE);

$result =~ m/([0-9]+) requests currently being processed, ([0-9]+) idle servers/;
my $requests = $1;
my $idle     = $2;


So wie ich es aus PHP gewöhnt bin, gibt er mir alles auf der Console aus aber nichts in $request

Das macht für mich noch viel weniger sinn.
Hat einer für mich eine Lösung wie es möglich ist die Ausgabe einer Webseite mit perl in eine Variable zu legen ohne irgend welche Consolenausgaben?

greenrover
Posts: 203
Joined: 2004-12-17 19:34

Re: Perl und Regex

Post by greenrover » 2008-04-02 18:32

Mit einem weiteren Parameter an cURL hat es funktioniert:

Code: Select all

my $result = `curl -s $opt_u`;

freddy36
Posts: 273
Joined: 2008-03-20 17:31

Re: Perl und Regex

Post by freddy36 » 2008-04-02 18:34

Code: Select all

my $url = 'http://example.com;
use LWP::Simple;
my $result = get $url;
die "Fetching $url failed" unless defined $result;