Pearl|Programmering / Grafisk formgivning|Forum|Nordichardware

Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
The forums are currently locked and only available for read only access
sp_Feed sp_TopicIcon
Pearl
Klas
It’s a first time for everybody
Medlem
Forum Posts: 3
Member Since:
September 5, 2001
sp_UserOfflineSmall Offline
1
January 17, 2002 - 10:34 am
sp_Permalink sp_Print

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 ]

daggerr
Kommer du hit ofta?
Medlem
Forum Posts: 1367
Member Since:
August 7, 2001
sp_UserOfflineSmall Offline
134747
January 18, 2002 - 7:41 pm
sp_Permalink sp_Print

vet inte om det finns någon funktion för det, kolla i phpmanualen, annars så är det väl bara att läsa tills man stöter på 'n' (ny rad och vagnretur) och sluta läsa där.

Liquid X
Hi, nice to meet you!
Medlem
Forum Posts: 1
Member Since:
January 20, 2002
sp_UserOfflineSmall Offline
135428
January 20, 2002 - 4:10 pm
sp_Permalink sp_Print

nåt sånt här borde funka:

#!/usr/bin/perl -w
open(fil,"fil.txt") || die "can't open fil.txt"
while($tmp = chomp($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

69link
Kommer du hit ofta?
Medlem
Forum Posts: 1398
Member Since:
July 2, 2001
sp_UserOfflineSmall Offline
135640
January 21, 2002 - 8:15 am
sp_Permalink sp_Print

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";
}

Klas
It’s a first time for everybody
Medlem
Forum Posts: 3
Member Since:
September 5, 2001
sp_UserOfflineSmall Offline
135774
January 21, 2002 - 2:59 pm
sp_Permalink sp_Print

Tackar.... Jag ska testa när jag kommer hem. Återkommer med rapport om hur det gick !

Forum Timezone: Europe/Stockholm
Most Users Ever Online: 1030
Currently Online:
Guest(s) 435
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
PetrbonFU PetrbonFU
Karine Bembry
Dolores Mcdaniels
Anibal McLeish
Francisca Alt
Alfie Everhart
Lester Huitt
Orlando Jorgensen
Mikki Lundgren
Dakota Kozlowski
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967

 

Member Stats:
Guest Posters: 2
Members: 79425
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL