Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Ja du kunne nok klart dette selv med litt søking. selv har jeg bare hatt 2 forelesninger i PERL.

Men det var god trening for meg så her er hvordan jeg løste det

 

 

 

open (FIL, "/bane/httpd.conf") or die "kan ikke åpne filen\n";
while ($line = <FIL>) {
$i++;
 if ($line =~ DocumentRoot) { print "$i\n" };
}
close(FIL);

Lenke til kommentar
  • 2 uker senere...

Forklaring:

 

Variablen $. viser hvilken linje du er på (hvor linje kan defineres på forskjellige vis) i filen du leser inn.. Perl har en god del spesialvariabler som kan gjøre ting enklere.

http://www.perl.com/pub/a/2004/06/18/variables.html, eller finn perlvar under http://www.perldoc.com/ (siden kommer ikke opp nå, så jeg kan ikke gi en direkte link) For å skrive Torbjørns one-liner som et program:

 

open (FIL, "/bane/httpd.conf") or die "kan ikke åpne filen\n";
while ($line = <FIL>) {
if ($line =~ DocumentRoot) { print "$.\n" };
}

 

perl closer automagisk, så jeg slettet den.

 

Kan også bruke variablen $_ som er den siste linjen lest, dersom du ikke ber om noe annet, så da blir det:

open (FIL, "/bane/httpd.conf") or die "kan ikke åpne filen\n";
while (<FIL>) {
if (/DocumentRoot/) { print "$_\n" }; # Matcher mot $_
}

 

Du kan også sette en variabel, $\ som er det som printes etter det du printer (om noen forsto det..) print bruker også $_ om du ikke ber den om noe annet, så vi kan si:

 

$\="\n"
open (FIL, "/bane/httpd.conf") or die "kan ikke åpne filen\n";
while (<FIL>) {
if (/DocumentRoot/) {print}; 
}

 

Eller enda mer perlsk, når du har en if for en enkel kommando, sett kommandoen først:

 

$\="\n"
open (FIL, "/bane/httpd.conf") or die "kan ikke åpne filen\n";
while (<FIL>) {
print if (/DocumentRoot/); 
}

 

 

M.

 

(Ikke så lett å stoppe når jeg kommer i gang)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...