Perl - как открыть / прочитать / распечатать - каталог и содержимое файла

0

ВОПРОС (24 апреля 2014 года): Я ищу способ избежать ручного пересмотра веб-страницы, чтобы включить ссылки на файлы в каталоге, чтобы содержимое этих файлов отображалось как фрагменты кода с использованием Syntaxhighlighter. Если вы не используете скрипт файлового менеджера (например, *.cgi или *.php), есть ли простой способ оценить файлы в определенном каталоге и включить их содержимое на веб-страницу?

Другими словами, я хотел бы иметь возможность вручную добавлять/удалять/модифицировать файл фрагмента кода из каталога и иметь сценарий для оценки каталога фрагментов (заново) каждый раз при загрузке страницы. Теперь, мне нужно будет вручную отредактировать мою веб-страницу, чтобы изменить имя license.txt если я переименую этот файл на сервере. Я надеюсь просто указать каталог (например, /home/lawlist/public_html/code_snippets), и сценарий оценивает содержимое этого каталога, чтобы заполнить веб-страницу содержимым файлов в этом каталоге. Поведение похоже на то, что может сделать файловый менеджер *.cgi или *.php.

  • 0
    Понятия не имею, о чем ты спрашиваешь. Судя по тексту , я думаю, что вы тоже нет.
  • 0
    @bjb568 bjb568 - Спасибо, что помогли мне увидеть, что разъяснение вопроса было необходимо. Я пересмотрел вопрос, включив в него пример кода и лучшее объяснение того, что нужно. Другой участник форума любезно разместил ответ, и мне нужно немного прочитать о том, что было предложено. Еще раз спасибо. В будущем мне нужно будет помнить, что есть тысячи людей, которые следят за тегами javascript и html , и перед тем, как опубликовать его, я лучше составлю черновик своего вопроса.
Теги:

2 ответа

0
Лучший ответ

Perl Script - test.cgi:

#!/usr/bin/perl

use CGI qw(:standard);

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

print <<HTML;

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>

<head>

<title>Document Title</title>

</head>

<body>

HTML

my $dir = '/home/lawlist/www';

my $query = new CGI;

my $name = $query->param('name');

my $file = $dir . "/" . $name;

opendir(DIR, $dir) or die $!;

while (my $file = readdir(DIR)) {

  next unless (-f "$dir/$file");

  next unless ($file =~ m/\.txt|\.el$/);

  print '<a href="/cgi-bin/test.cgi?name=' . $file . '">' . $file . "</a>" . "<br>" . "\n\n"; }

closedir(DIR);

if ($name) {

  open (DATA, $file) or return $self->print_json_error($self->language('ERR_CANNOT_OPEN', $file->{name}, $!));

  read (DATA, my $file, -s DATA);

  close DATA;

  print '<pre class="brush:  lisp">' . "\n\n" . $file . "\n" . '</pre>'; }

print <<HTML;

</body>

</html>

HTML

exit 0;

Конфигурация.htaccess

DirectoryIndex index.html index.htm index.php index.cgi

SSLOptions +StdEnvVars

# Customized server error messages:
# ErrorDocument 404 /page.not.found.basic.html

AddHandler cgi-script .pl .cgi
Options +Includes +ExecCGI

AddType text/html .shtml .shtm .html .htm
AddHandler server-parsed .shtml .shtm .html .htm

# if you want to see the list of files in a directory
# without an index.html file, then uncomment the following line:

# Options +Indexes

Options -Indexes

# Options +FollowSymLinks

# Options Indexes Includes FollowSymLinks ExecCGI

Вставка страницы:

<hr COLOR="#CCCCCC" size=1 NOSHADE>

<!--#exec cgi="/cgi-bin/test.cgi"-->

<hr COLOR="#CCCCCC" size=1 NOSHADE>
1

Это серверная технология. На серверном JavaScript вы можете использовать модуль nodejs fs и выводить содержимое.

"SyntaxHighlighting" - это клиентская технология, и вы можете использовать любую библиотеку, которая вам нравится для раскраски кода.

  • 0
    Спасибо за предложение - я прочитаю эту тему, чтобы ознакомиться с ним - очень признателен!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню