Page 1 of 1

Perl und Regex

Posted: 2008-04-02 17:40
by greenrover
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?

Re: Perl und Regex

Posted: 2008-04-02 18:26
by greenrover
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?

Re: Perl und Regex

Posted: 2008-04-02 18:32
by greenrover
Mit einem weiteren Parameter an cURL hat es funktioniert:

Code: Select all

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

Re: Perl und Regex

Posted: 2008-04-02 18:34
by freddy36

Code: Select all

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