Avatar billede lmdthel Nybegynder
14. marts 2003 - 18:14 Der er 3 kommentarer og
1 løsning

Hvorfor virker mit while loop ikke ??

Hi Rødder

jeg har følgende while loop, konceptet er at man søger efter en streng, når man har fundet den, så læser man linier ind et array fra strengen indtil at man finde END, det virker også fint, med jeg vil gerne have scriptet til at lede videre i filen, efter næste streng som matcher osv osv. men efter at scriptet finde kun første streng..læser linier indt til END og stopper så..  hvad skal jeg gøre for at få det til at lede videre i filen ??

///Thomas

open FILE, "c:/test/logs/start.log" or die $1;

while (<FILE>)
{
if (/(\*\*\*) +(ALARM|ALARM CEASING|ALARM DECREASED|ALARM INCREASED|REPEATED) +(\d+) +(\w+)\/(\w+) +"($ne_system_name)"+(U| ) +(\d+) +(\d+)/)
    {
        ($type,$alnr,$acls,$alcat,$origin,$att,$date_time)=($2,$3,$4,$5,$6,$7,$8.$9);


                        &readalarm();

      }

}

sub readalarm
{
                        $i=0;
                        while (<FILE>) {
                            $temp[$i] = $_;

                        if  (/^END \s{8}/){
                            last;


}

                        $i++;

}
                        $i = ($#temp-1);
                        @array = @temp;
                        @info2 = $temp[0];
                        @info3 = @temp[1 .. $i];
Avatar billede erikjacobsen Ekspert
14. marts 2003 - 18:36 #1
Er det ikke fordi du overskriver indholdet i $temp ?
Avatar billede lmdthel Nybegynder
14. marts 2003 - 18:50 #2
Hmm det tror jeg da ikke jeg gør...det jeg ikke kan forstå er at hvis jeg nu i subreadalarm kun printer f.eks $_ så virker det heller ikke...lige så snart jeg har værer nede i rutinen så holder de op med at virke...jeg kan hvis ikke jeg har en sub..så virker det fint
Avatar billede erikjacobsen Ekspert
14. marts 2003 - 19:06 #3
Principielt virker din konstruktion. Her er "laes.pl":

#aaaaaaa
#c1111
#c2222
#bbbb
#uuuu
#uuuu
#aaaaa
#c3333
#c4444
#bbbbb

open FILE, "laes.pl" or die;
while (<FILE>)  {
  if (/^#a/)  {
    &subsub();
  }
}


sub subsub {

  while (<FILE>) {
    print $_;
    if (/^#b/) {
      last;
    }
  }
  print "slut\n";
}
Avatar billede lmdthel Nybegynder
09. maj 2003 - 10:20 #4
takker...og lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester