Hi Ralf,
ich mußte selbst ein wenig in meiner Erinnerung kratzen, aber die Lösung liegt wohl im ‚dynamic scope‘ der Variablen $1 etc.
Im Camelbook findet sich die folgende Erklärung:
$`, $&, $’, and the numbered variables are global variables implicitly localized to the enclosing dynamic scope. They last until the next successful pattern match or the end of the current scope, whichever comes first. More on this later, in a different scope.
–> d.h. außerhalb des akutellen ‚dynamic scopes‘ (in diesem Fall der if-Block) ist die Variable $1 nicht mehr definiert, und deswegen LEER!
Macht man es dagegen so, klappts auch wieder.
#! /soft/perl5/bin/perl
# (Achtung mein Perl-Pfad ist anders)
#
# ich hole mir die Daten nicht aus einer Kontrolldatei, sondern
# aus der DATA-Section des Scripts
while()
{
if (m/IP address is/) # abgewiesen?
{
$\_ =~/(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/;
$lastfoundip = $1;
}
}
print "IP-Adresse:\t$lastfoundip\n";
\_\_DATA\_\_
local IP address is 212.144.111.231, remote is 145.253.1.45
(die Zeilenbreite ist wirklich ein Problem, ich habe auch ein wenig abgeschnitten).
In dieser Variante funktionierts bei mir.
Gruß
bernhard