Avatar billede shjdsi Nybegynder
19. juli 2001 - 12:07 Der er 4 kommentarer og
1 løsning

perl checke på comando line argumenter og udskrive fil.

Hej!
Et par små spørgsmål!
hvordan checker jeg på comando line argumenter, i born shell ville jeg gøre således
if ($1 = \"system\"); then
bla bva
fi
men hvordsan i perl.


og hvordan kan jeg liste de sidste 20 linier af en textfil (f.eks logfil) i perl, i shell ville jeg bare udføre
tail -20 filnavn.

Skal man udføre en løkke eller findes der noget nemt og smart til den slags i perl.

NB: Det er et unixscript der skal konverteres til perl og køres på nt, derfor kan jeg ikke bruge system funktionen
Avatar billede erikjacobsen Ekspert
19. juli 2001 - 12:30 #1
print $ARGV[0];

giver første argument
Avatar billede erikjacobsen Ekspert
19. juli 2001 - 12:35 #2
og dette giver dem alle

for ($i=0;$i<=$#ARGV;$i++) {
  print $ARGV[$i].\"\\n\";
}
Avatar billede erikjacobsen Ekspert
19. juli 2001 - 13:07 #3
Skal du læse de sidste linier af en fil, nogenlunde effektivt, spoler du ned til
bunden af filen, og går så mange bytes tilbage, som er rimeligt (kig på
typisk linielængde). Den første linie er typiske ikke komplet, men resten kan
skrives ud. Noget i denne stil:

open(F,\"access.log\");
sysseek(F,-10000,2);
sysread(F,$buffer,10000);
@a=split(/\\n/,$buffer);
for ($i=0;$i<=$#a;$i++) {
  print \"Linie: $a[$i]\\n\";
}
Avatar billede shjdsi Nybegynder
19. juli 2001 - 13:32 #4
Jeg får følgende fejl når jeg prøver at ekskvere læsning af filen.

syntax error in file simon.pl at line 35, next 2 tokens \"sysseek(\"
Execution of simon.pl aborted due to compilation errors.

scriptet ser således ud?

if($fail eq \"Empty job\" || $fail eq \"None\" || $fail eq \"Not in time window\") {
      print \"det virker\";
      exit 0;
                     
  }
  else {

    $file=\'c:\\log\\archman.log\';
    open(F,$file);
    sysseek(F,-10000,2);
    sysread(F,$buffer,10000);
    @a=split(/\\n/,$buffer);
    for ($i=0;$i<=$#a;$i++) {
      print \"Linie: $a[$i]\\n\";
    }

}

Avatar billede erikjacobsen Ekspert
19. juli 2001 - 16:10 #5
øh - hvilken version af Perl kører du?
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