かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】

サイトマップ(ディレクトリ内のファイルを調べる)

#! /usr/local/bin/perl

$DIR    = "../../sample";        #サイトマップを作るディレクトリ

#表示しないディレクトリ
@NO    = ("img", "dat");

# HTML出力
print qq(Content-type: text/html; charset=Shift_JIS\n\n);
print <<END;
    <html>
    <head>
    <title>サイトマップ</title>
    <style type="text/css">
    <!--
    table    {
        width:        100%;
        font-size:    12px;
        text-align:    left;
        border:        1px solid #999;
    }
    //-->
    </style>
    </head>
    <body>
END

openDir($DIR);                #ディレクトリ内のHTMLファイルを表示

print <<END;
    </body>
    </html>
END

exit;

#================================================
sub openDir
{
    my    ($i, $j, $title);
    print qq(<table>\n);
    print qq(<tr>);
    print qq(<th colspan="2">);
    my    $FILE = "$_[0]/index.html";
    if($_[0] eq $DIR) {                        #トップのディレクトリの場合の表示
        print qq(サイトマップ);
    }
    elsif(-e $FILE) {                        #ディレクトリ内のindex.htmlのタイトルを表示
        open(FILE, "<$FILE");
        my    @HTML = <FILE>;
        close(FILE);
        for($j = 0 ; $j < @HTML ; $j++) {
            if($HTML[$j] =~ /<title>(.+)<\/title>/) {
                $title = $1;
                last;
            }
            if($j + 1 == @HTML) {                #タイトル無しの場合 ディレクトリ名を表示
                my    @dir = split(/\//, $_[0]);
                $title = $dir[@dir - 1];
            }
        }
        print qq(<a href="$_[0]/">$title</a>);
    }
    else {                                #index.html無の場合 ディレクトリ名を表示
        my    @dir = split(/\//, $_[0]);
        print qq($dir[@dir - 1]);
    }
    print qq(</th>);
    print qq(</tr>\n);
    opendir(DIR, $_[0]);                        #ディレクトリ内にあるファイルを読み込む
    my    @FILE = readdir(DIR);
    closedir(DIR);
    for($i = 0 ; $i < @FILE ; $i++) {                #ディレクトリ内のファイルを確認
        if($FILE[$i] eq "." or $FILE[$i] eq "..") {
            next;
        }
        my    $FILE = "$_[0]/$FILE[$i]";
        if(-d $FILE) {                        #ディレクトリの場合
            for($j = 0 ; $j < @NO ; $j++) {            #表示させないディレクトリを確認
                if($FILE eq $DIR . "/" . $NO[$j]) {
                    last;                #一致の場合
                }
            }
            if($j == @NO) {
                print qq(<tr>);
                print qq(<td width="50"></td>);
                print qq(<td>\n);
                openDir($FILE);                #ディレクトリ内のHTMLファイルを表示
                print qq(</td>);
                print qq(</tr>\n);
            }
        }
        elsif(-B $FILE) {                    #バイナリファイルの場合 表示しない
        }
        elsif($FILE[$i] =~ /\.s?html/ and !($FILE[$i] =~ /index.s?html$/)) {    #HTMLファイルの場合 表示
            open(FILE, "<$FILE");
            my    @HTML = <FILE>;
            close(FILE);
            for($j = 0 ; $j < @HTML ; $j++) {        #HTMLファイル内からタイトルを探す
                if($HTML[$j] =~ /<title>(.+)<\/title>/) {
                    $title = $1;
                    print qq(<tr>);
                    print qq(<td width="50"></td>);
                    print qq(<td><a href="$FILE">$title</a></td>);
                    print qq(</tr>\n);
                    last;
                }
            }
        }
    }
    print qq(</table>\n);
}

CGI(Perl)
Hello world ! ユーザーエージェント取得・表示($ENV{'HTTP_USER_AGENT'})
IPアドレス取得・表示($ENV{'REMOTE_ADDR'}) リンク元取得・表示($ENV{'HTTP_REFERER'})
URL取得・表示($ENV{'HTTP_HOST'}, $ENV{'REQUEST_URI'}) 環境変数を全て表示(%ENV)
ホスト名取得・表示(gethostbyaddr) 訪問者のプロバイダーを表示
訪問者の都道府県を取得・表示 日付を表示(localtime time)
日付を画像表示(localtime time, substr) アクセス日時を表示(localtime time)
指定の日までの日数を表示 曜日によって背景色を変える
日によって背景色を変える 月によって背景色を変える
見るたびに背景色を変える 見るたびに背景画像を変える
おみくじ(rand, int) カラーチャート
Shift_JIS文字コード表 UTF-8文字コード表
グラフ(横棒グラフ) アクセスカウンター
アクセスカウンター(画像) アクセスカウンター(今日・昨日)
訪問回数(クッキー, $ENV{'HTTP_COOKIE'}, Set-Cookie) アクセスログ保存
アクセスログ集計 パスワード認証
クッションページ($ENV{'QUERY_STRING'}) クッションページ($ENV{'PATH_INFO'})
フォーム入力内容をクッキーに保存 1つのCGIでフレームページを表示
IPアドレスからホスト名を取得(gethostbyaddr) ホスト名からIPアドレスを取得(gethostbyname)
IPアドレスからプロバイダーを取得 IPアドレスから都道府県を取得
文章中の文字列を別の文字列に一括変換 カレンダー
カレンダー(前月・次月へのリンク付) カレンダー(今年1月〜12月)
掲示板 掲示板(URL自動変換/連続改行・スペース削除)
掲示板(年齢・性別・都道府県選択) 画像アップロード掲示板
チャット Web日記
サイトマップ(ディレクトリ内のファイルを調べる) Webデータ取得(HTTPヘッダー, HTMLソース, use Socket)
Webデータ取得(HTTPヘッダー, HTMLソース, use HTTP::Request::Common) トラックバック受信
トラックバック送信 メール送信(メールフォーム, sendmail)
リバーシ(ボードゲーム) .htaccessユーザー認証用ユーザーファイル作成
リダイレクト 条件指定リダイレクト
言語振り分けリダイレクト 条件指定アクセス拒否(ステータスコードを返す)
HTMLファイル読み込み・表示 HTMLファイル読み込み・パスワード認証
HTMLファイル読み込み・条件指定アクセス拒否 HTMLファイル読み込み・条件指定リダイレクト
外部CGIファイル読み込み(require) 画像ファイル読み込み・表示
画像縮小・拡大・サイズ変更(Image::Magick, Resize) 画像切り出し(Image::Magick, Crop)
画像文字埋め込み(Image::Magick, Annotate) 画像合成(Image::Magick, Composite)
画像生成・保存(Image::Magick->new) 画像合成アクセスカウンター
かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】