Avatar billede Boddicker Seniormester
21. januar 2000 - 23:00 Der er 9 kommentarer og
1 løsning

Dir listing

Jeg søger et script, der kan følgende:

Udskrive en directory listing af en given dir. Outputtet skal vises således, at scriptet tager hvert enkelt html-fils <title> og bruger den som tekst til hyperlinket. Eks:

Et dokument hedder: 0001.html
Dokumentet har titlen: Test
Outputtet skal derfor være:
<a href=0001.html>Test</a>

200 point til den første Gilbert, der kan knække den nød!
Avatar billede mukke Nybegynder
22. januar 2000 - 02:12 #1
#!perl                   

### Bemærk at i ovennævnte linie brues #! efterfulgt af stien til perl!

########################################################################
################ Copyright (C)2000,  Thomas Turn Jensen ################
################ http://www.archer.dk  Mukke@archer.dk ################
########################################################################
################    Version of this script:    1.0    ################
########################################################################

opendir(DIR, 'c:/www/');
@Files = readdir(DIR);

print "content-type: text/html\n\n";

foreach $File (@Files)
{
  if ($File =~ m/.html$/)
  {
    $Caption = $File;
    $Text = '';
    open (FILE, "<$File");
    while (<FILE>)
    {
      $Text .= $_;
    }
    close FILE;
    if ($Text =~ m/\<TITLE\>(.*?)\<\/TITLE\>/i) {$Caption = $1}
    print "<A HREF=$File>$Caption</A><BR>\n";
  }
}
Avatar billede mukke Nybegynder
22. januar 2000 - 02:13 #2
Forresten så kan du lige tilføje denne linie i slutningen:

closedir(DIR);
Avatar billede mukke Nybegynder
22. januar 2000 - 02:14 #3
Bemærk at det dir der i starten åbnes naturligvis skal bruges i stedeet for c:\www i linien
opendir(DIR, 'c:/www/');
Avatar billede Boddicker Seniormester
22. januar 2000 - 11:22 #4
Umiddelbart dur det ikke. Der kommer følgende fejl, når man læser i error.log'en, står der:

Can't find string terminator "'" anywhere before EOF at dirlist.pl line 22.
[Sat Jan 22 11:13:43 2000] [error] [client 212.242.31.17] Premature end of script headers: /hotel/movieboxen/WWW/cgi_bin/dirlist.pl

Jeg skal lige høre noget. Directory listingen skal foregør inde i en tabel, så skal jeg have lagt en masse alm. html
kode "rundt om" dir-dumpen. Kan din kode godt klare det, eller blive den mærkelig, når man sætter nogle
html-linier ind (via print "blablabla"; naturligvis)?

Jeg har vist programmet nedenfor, så du kan se, hvad det er jeg sætter serveren til at arbejde med:


#!/usr/bin/perl                   

### Bemærk at i ovennævnte linie brues #! efterfulgt af stien til perl!

########################################################################
################ Copyright (C)2000,  Thomas Turn Jensen ################
################ http://www.archer.dk  Mukke@archer.dk ################
########################################################################
################    Version of this script:    1.0    ################
########################################################################

opendir(DIR, '/hotel/movieboxen/WWW/arkiv/html');
@Files = readdir(DIR);

print "content-type: text/html\n\n";

foreach $File (@Files)
{
  if ($File =~ m/.html$/)
  {
    $Caption = $File;
    $Text = ';
    open (FILE, "<$File");
    while (<FILE>)
    {
      $Text .= $_;
    }
    close FILE;
    if ($Text =~ m/\<TITLE\>(.*?)\<\/TITLE\>/i) {$Caption = $1}
    print "<A HREF=$File>$Caption</A><BR>\n";
  }
}
closedir(DIR);
Avatar billede ricki Nybegynder
22. januar 2000 - 12:27 #5
der er vist også en typo i linie 22 :-)
$Text = ';
rettes til:
$Text = '';

Avatar billede ricki Nybegynder
22. januar 2000 - 12:29 #6
hmmm... ham kan ikke skrive 2 ' efter hinnanden... nå man så skriv jeg det sådan istedet
$Text = ';
rettes til:
$Text = "";

Det var da ubrugeligt at man ikke kan skrive det.
Avatar billede Boddicker Seniormester
22. januar 2000 - 12:48 #7
Okay, nu kører scriptet, men det gør ikke det, jeg bad om. Når den lister dir'en, dumper den bare fil-navnet med extension ud. D.v.s. at filen 0001.html bliver listet ligesådan, altså: 0001.html. Den skal jo tage <title>blablabla</title> fra 0001.html. Altså så der i listingen står: Blablabla i stedet for 0001.html. Desuden angiver den ikke korrekt hyperlink. Scriptet hyperlinker alt inde fra cgi-bin. Mit dokument ligger i skuffen arkiv/html/0001.html, men scriptet tror, at det ligger i cgi-bin/0001.html

Håber det kan fixes!
Avatar billede mukke Nybegynder
22. januar 2000 - 22:13 #8
Med hensyn til de´t rigtige link - så kan du i den 4. sidste linie:

    print "<A HREF=$File>$Caption</A><BR>\n";

sætte den fulde url ind:

    print "<A HREF=http://www.minserver.dk/minsti/$File>$Caption</A><BR>\n";

Med hensyn til at den ikek viser det rigtige.. prøv at rette

  open (FILE, "<$File");

til

  open (FILE, "</hotel/movieboxen/WWW/arkiv/html/$File");


Håber det hjælper..... det skal lige for god ordens skyld siges at jeg har kopieret det oprindelige script direkte fra en fil jeg lavede lokalt - og som virkede fint - - havde ikke lige tænkt på at den måske ville lægge i et andet bibliotek.


Avatar billede Boddicker Seniormester
22. januar 2000 - 23:41 #9
Alletiders! Så dur det! :)

Btw du skulle vel ikke have et bud på mit andet spørgsmål?

Det drejer sig om: http://www.eksperten.dk/spm.asp?id=10287
Avatar billede mukke Nybegynder
23. januar 2000 - 12:11 #10
Hmm.. Har lige kigget på det - og kan ikke lige ummidelbart se noget :(

Desværre.
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