September 5, 2001
Hur gör man följande i Pearl ?
Läs rad 1 i en textfil.
$test="rad 1"
if $test="jyttg"
Utför en viss sak
Om $test inte är lika med "jyttg" så ska den läsa rad 2 och kolla samma sak.
Finns inte "jyttg" i textfilen så ska scriptet bara gå vidare som vanligt.
Skriva if-satsen och vad som ska hända är inga problem. Men Hur läser man rad för rad i en textfil ?? Den ska alltså läsa rad för rad till det hittar tex. "jyttg" eller tills det att filen är slut.
Hjälp mig !!
[ Detta Inlägg ändrades av: Klas den 2002-01-18 09:02 ]
January 20, 2002
nåt sånt här borde funka:
#!/usr/bin/perl -w
open(fil,"fil.txt") || die "can't open fil.txt"
while($tmp =
if ($tmp eq "apa") {
//gör nåt
break;
}
}
close(fil);
detta kommer att öppna en fil och leta efter en rad som innehåller "apa" om raden hittas avbryts loopen. har för mig att det funkar med break dock ett tag sen jag skrev perl script.
att köra perl med -w är inte fel då perl kommer att slänga ur sig synpunkter på ditt script när det körs vilket gör det lättare att hitta fel.
/Liquid X
July 2, 2001
Du kan också använda dig av regexp:
#!/usr/bin/perl
while (<>) {
if (/.*jyttg.*/) {
print "jyttg finns...n";
}
}
Ovan program snutt testat genom att starta den och mata in interaktivt eller ge ett filnamn som argument så kommer den att läsa rad för rad ur filen.
Du kan använda dig av raden i loopen med:
if (/.*jyttg.*/) {
print "Raden med jyttg lyder: $_";
}
Du kan också plocka delar ur raden:
if (/.*jyttg(.*)/) {
print "efter jyttg stod: $1n";
}
(notera parenteserna, sätt parenteser runt allt du vill plocka) exempel:
if (/(.*)jyttg(.*)/) {
print "Innan jyttg stod: $1n";
print "Efter jyttg stod: $2n";
}
1 Guest(s)