簡體   English   中英

Perl-如何打開/讀取/打印-目錄和文件內容

[英]Perl — how to open / read / print — directory and file content

問題 (2014年4月24日):我正在尋找一種避免手動修改網頁以在目錄中包含文件鏈接的方法,以便使用Syntaxhighlighter將這些文件的內容顯示為代碼片段。 除了不使用文件管理器腳本(例如* .cgi或* .php),是否有一種簡便的方法可以評估特定目錄中的文件並將其內容包含在網頁中?

換句話說,我希望能夠從目錄中手動添加/刪除/修改代碼片段文件,並讓腳本在每次加載網頁時重新評估代碼片段的目錄。 就目前情況而言,如果我在服務器上重命名該文件,則需要手動編輯網頁以更改license.txt的名稱。 我希望僅指定一個目錄(例如/home/lawlist/public_html/code_snippets ),並讓腳本評估該目錄的內容,以該目錄中的文件內容填充網頁。 該行為類似於* .cgi或* .php文件管理器可以執行的操作。

那就是服務器技術。 在服務器端JavaScript中,您可以使用nodejs的fs模塊並輸出內容。

“ SyntaxHighlighting”是客戶端技術,您可以使用任何喜歡的庫進行代碼着色。

Perl腳本 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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM