Schrift
[thread]10657[/thread]

HTML Seite mit Links mittels Perl-Module erstellen

Leser: 6


<< |< 1 2 3 4 ... 6 >| >> 54 Einträge, 6 Seiten
rooky
 2007-10-25 01:56
#101297 #101297
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen ich habe hier ein Problem, das mir seit über einer Woche Probleme(ich bin blutiger Anfänger)bereitet und hoffe ihr könnt mir helfen.

Ich habe ein Verzeichis mit mehreren Unterverzeichnissen, die ich nach PDF-Dateien durchsuchen möchte. Dieses habe ich mit File::Find gemacht und es funktioniert wunderbar.

Mein Problem ist jetzt, dass ich die Unterverzeichnisse, die die gesuchte Dateien enthalten als Links auf einer HTML-Seite hochladen möchte so dass wenn ich auf die klicke die PDF-Dateien bekomme, die in diesem Unterverzeichnis sind.

Gibt es module, die dieses Problem lösen können oder musste ich (mit eurer Hilfe:-) )das alles selber programmieren. Ich fange gerade an mich mit Perl zu beschäftigen deswegen bräuchte ich eine ausführlichere Hilfe.

Danke im Voraus
renee
 2007-10-25 10:23
#101301 #101301
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Im Prinzip sollte es ungefähr so gehen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl

use strict;
use warnings;
use HTML::Template::Compiled; # musst du wahrscheinlich noch installieren

my @files = qw(file1 file2); # wird bei Dir durch File::Find gefuellt

my $content = do{ local $/; <DATA> };
my $tmpl = HTML::Template::Compiled->new( scalarref => \$content );
my @links = map{ {HREF => $_, TITLE => $_ } }@files;
$tmpl->param( LINKS => \@links );
print $tmpl->output;


__DATA__
<html>
 <body>
    <ul>
    <%LOOP LINKS %><li><a href="<%= HREF ESCAPE=URL %>"><%= TITLE ESCAPE=HTML %></a></li>    
    <%/LOOP %>
    </ul>
  </body>
</html>


Anschauen solltest Du Dir die Doku zu CPAN:HTML::Template::Compiled
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
rooky
 2007-10-25 11:24
#101303 #101303
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Dake renee für die schnelle Antwort.ich werde es gleich ausprobieren
rooky
 2007-10-25 20:55
#101337 #101337
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen eine Frage: hier ist das Skript womit ich die Verzeichnisse duchsuche:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#! /usr/bin/perl -w
    eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
        if 0; #$running_under_some_shell

use strict;
use File::Find ();

# Set the variable $File::Find::dont_use_nlink if you're using AFS,
# since AFS cheats.

# for the convenience of &wanted calls, including -eval statements:
use vars qw/*name *dir *prune/;
*name   = *File::Find::name;
*dir    = *File::Find::dir;
*prune  = *File::Find::prune;

sub wanted;



# Traverse desired filesystems
File::Find::find({wanted => \&wanted}, '.');
exit;


sub wanted {
    /^.*\.pdf\z/s &&
    print("$name\n");
}


wie rufe ich dieses Skript im Skript(oben) HTML::Templates::Compiled damit
Code (perl): (dl )
my @files = qw(file1 file2);
mit dem Ergebnissen gefuelt wird.

Danke im Voraus
renee
 2007-10-25 21:23
#101338 #101338
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ungetestet:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/perl

use strict;
use warnings;
use HTML::Template::Compiled; # musst du wahrscheinlich noch installieren
use File::Find;

my @files;
find( \&wanted, '.' );

my $content = do{ local $/; <DATA> };
my $tmpl = HTML::Template::Compiled->new( scalarref => \$content );
my @links = map{ {HREF => $_, TITLE => $_ } }@files;
$tmpl->param( LINKS => \@links );
print $tmpl->output;

sub wanted{
    push @files, $_ if /\.pdf$/;
}


__DATA__
<html>
 <body>
    <ul>
    <%LOOP LINKS %><li><a href="<%= HREF ESCAPE=URL %>"><%= TITLE ESCAPE=HTML %></a></li>    
    <%/LOOP %>
    </ul>
  </body>
</html>
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
rooky
 2007-10-25 22:42
#101349 #101349
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Hallo renee und danke für die schnelle Hilfe. Das Skript funktioniert wie gewünscht wenn ich es im Konsole ausführe. Allerdings wenn ich es im Browser wie folgt :
Code: (dl )
http://localhost/~user/skript.pl
eingebe versucht firefox das Skript herunterzuladen anstatt es auszuführen. Was mache ich falsch hier, muss ich bei firefox einige Einstellungen vornehmen.

Danke im Voraus
GwenDragon
 2007-10-25 22:48
#101351 #101351
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
Da wird kein Header für den Server ausgegeben.

Füge mal folgendes hinzu:

Zeile 7:
Code (perl): (dl )
use CGI;


Zeile 10:
Code (perl): (dl )
1
2
my $cgih = new CGI;
print $cgih->header();
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

rooky
 2007-10-25 23:15
#101353 #101353
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Hallo Gwen und danke für die schnelle Antort. Also nach den Veränderungen wie folgt:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/perl
 
use strict;
use warnings;
use HTML::Template::Compiled; # musst du wahrscheinlich noch installieren
use File::Find;
use CGI; 
my @files;
find( \&wanted, '.' );
my $cgih = new CGI;
print $cgih->header();
 
my $content = do{ local $/; <DATA> };
my $tmpl = HTML::Template::Compiled->new( scalarref => \$content );
my @links = map{ {HREF => $_, TITLE => $_ } }@files;
$tmpl->param( LINKS => \@links );
print $tmpl->output;

sub wanted{
    push @files, $_ if /\.pdf$/;
 }
 
 
 __DATA__
 <html>
  <body>
     <ul>
     <%LOOP LINKS %><li><a href="<%= HREF ESCAPE=URL %>"><%= TITLE ESCAPE=HTML %></a></li>    
     <%/LOOP %>
     </ul>
   </body>
 </html>


bekomme ich im Brwoser mit
Code: (dl )
http://localhost/~user/skript.pl

die Meldung, dass das Objekt nicht gefunden wurde. Ich weiss echt5 nicht wo das Problem liegt.

Danke im Voraus
GwenDragon
 2007-10-25 23:27
#101355 #101355
User since
2005-01-17
14510 Artikel
Admin1
[Homepage]
user image
Wie sieht die Meldung aus? Bitte hier mal komplett posten!
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

rooky
 2007-10-25 23:36
#101356 #101356
User since
2007-10-25
38 Artikel
BenutzerIn
[default_avatar]
Hier die Meldung

Objekt nicht gefunden!

Der angeforderte URL konnte auf dem Server nicht gefunden werden. Der Link auf der verweisenden Seite scheint falsch oder nicht mehr aktuell zu sein. Bitte informieren Sie den Autor dieser Seite über den Fehler.

Sofern Sie dies für eine Fehlfunktion des Servers halten, informieren Sie bitte den Webmaster hierüber.
Error 404
localhost
Thu Oct 25 20:53:10 2007
Apache/2.2.3 (Linux/SUSE)

Danke
<< |< 1 2 3 4 ... 6 >| >> 54 Einträge, 6 Seiten



View all threads created 2007-10-25 01:56.