萌えPerlのバックアップフォルダのルートディレクトリにて
1.edit_menu.pl というファイルをつくる。
2.以下を書き込む。
#!c:/perl/bin/perl
use strict;
use warnings;
use Data::Dumper;
use File::Find;
# テンプレート読込
my $tmpl = "C:\\moeperl\\01perl\\edit_menu.txt";
open(TMPL,$tmpl);
my @tmpl = <TMPL>;
close(TMPL);
# 指定したディレクトリ以下全てのファイルを編集
my @searchpath = ('C:\\moeperl\\01perl');
find(\&wanted, @searchpath);
exit(0);
##############
# subroutine #
##############
# ファイル一覧(再帰的に呼び出し)
sub wanted{
if (/.html/){edit($File::Find::name)}
}
# 編集
sub edit{
# ファイル読込
my $file = shift;
open(FILE,$file);
my @html = <FILE>;
close(FILE);
# テンプレート置換
my @html_e;
my $edit_flag = 0;
for (@html){
if (/MoePerlLeftMenuStart/){
$edit_flag=1;
push (@html_e,@tmpl);
}
if ($edit_flag ne 1){push (@html_e,$_)};
if (/MoePerlLeftMenuEnd/){$edit_flag=2};
}
# オミット制御
if ($edit_flag eq 2){
if ($file=~/j\w{3}.html/){
my $key = makekey($file);
for (@html_e){
if (/id="$key"/){
$_ =~ s/ class="sub"//;
}
}
}
}
#ファイルアウトプット
if ($edit_flag eq 2){
open(OUT,"> $file");
print OUT @html_e;
close(OUT);
}
}
sub makekey{
my $file = shift;
my $key;
$file =~ /j(\d)\d{2}.html/;
$key = $1;
if ($key =~ /\d/){
$key++;
} else {
my %alpha=('a'=>'11', 'b'=>'12', 'c'=>'13', 'd'=>'14',
'e'=>'15', 'f'=>'16', 'g'=>'17', 'h'=>'18',
'i'=>'19', 'j'=>'20',);
$key = $alpha{$key};
}
$key = "submenu".$key;
return $key;
}
3.edit_menu.txt というファイルを作る。
4.以下を書き込む。
<!-- MoePerlLeftMenuStart //-->
<TD class=left valign="top">
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href ="index.html"> トップページ</A><BR>
</TD></TR></TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href ="map.html"> サイトマップ</A><BR>
</TD></TR></TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu1 class=OFF onclick="menushow('menu1')" onkeypress="menushow('menu1')"> はじまりはじまり </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu1" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j010.html"> はじめまして </A></td></TR>
<TR><TD class="submenu"><A href ="j020.html"> パールって何? </A></TD></TR>
<TR><TD class="submenu"><A href ="j030.html"> なんでパール? </A></TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu2 class=OFF onclick="menushow('menu2')" onkeypress="menushow('menu2')"> まずは準備 </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu2" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j110.html"> 環境作り </A></TD></TR>
<TR><TD class="submenu"><A href ="j120.html"> プログラムとは</A></TD></TR>
<TR><TD class="submenu"><A href ="j130.html"> 書き方の基本 </A></TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu3 class=OFF onclick="menushow('menu3')" onkeypress="menushow('menu3')"> 変数・演算子 </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu3" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j210.html"> 変数配列ハッシュ</A></TD></TR>
<TR><TD class="submenu"><A href ="j220.html"> リファレンス </A></TD></TR>
<TR><TD class="submenu"><A href ="j230.html"> 演算子 </A></TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu4 class=OFF onclick="menushow('menu4')" onkeypress="menushow('menu4')"> 条件・繰返 </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu4" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j310.html"> 条件文 </A></TD></TR>
<TR><TD class="submenu"><A href ="j320.html"> 繰り返し文 </A></TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu5 class=OFF onclick="menushow('menu5')" onkeypress="menushow('menu5')"> 正規表現・関数 </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu5" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j410.html"> サブルーチン </A></TD></TR>
<TR><TD class="submenu"><A href ="j420.html"> 正規表現 </A></TD></TR>
<TR><TD class="submenu"><A href ="j430.html"> 文字列の操作 </A></TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu6 class=OFF onclick="menushow('menu6')" onkeypress="menushow('menu6')"> ブラウザから入力 </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu6" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j510.html"> フォーム </A></TD></TR>
<TR><TD class="submenu"><A href ="j520.html"> リンク </A></TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu7 class=OFF onclick="menushow('menu7')" onkeypress="menushow('menu7')"> データファイル </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu7" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j610.html"> ディレクトリ </A></TD></TR>
<TR><TD class="submenu"><A href ="j620.html"> ファイル操作 </A></TD></TR>
<TR><TD class="submenu"><A href ="j630.html"> ロックファイル</A></TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu8 class=OFF onclick="menushow('menu8')" onkeypress="menushow('menu8')"> 応用・実用 </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu8" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j710.html"> ファイル入出力</A></TD></TR>
<TR><TD class="submenu"><A href ="j720.html"> データの記録 </A></TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu9 class=OFF onclick="menushow('menu9')" onkeypress="menushow('menu9')"> コマンドライン </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu9" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"><A href ="j810.html"> コマンドで操作</A></TD></TR>
<TR><TD class="submenu"><A href ="j820.html"> 簡単な例 </A></TD></TR>
<TR><TD class="submenu"><A href ="j830.html"> 簡単な例2 </A></TD></TR>
</TABLE>
<!-- ちょい変更が多いので先のことはひとまずオミット
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu9 class=OFF onclick="menushow('menu10')" onkeypress="menushow('menu9')"> モジュール </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu9" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"> モジュール </TD></TR>
<TR><TD class="submenu"> リファレンス2</TD></TR>
<TR><TD class="submenu"> ダンパー </TD></TR>
<TR><TD class="submenu"> テンプレート </TD></TR>
<TR><TD class="submenu"> フィルイン </TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu10 class=OFF onclick="menushow('menu10')" onkeypress="menushow('menu10')"> ウェブアプリとは </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu10" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"> 単純だけど面倒</TD></TR>
<TR><TD class="submenu"> セッション </TD></TR>
<TR><TD class="submenu"> バリデイト </TD></TR>
<TR><TD class="submenu"> サニタイズ </TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu11 class=OFF onclick="menushow('menu11')" onkeypress="menushow('menu11')"> Flashとの連携 </A><BR>
</TD></TR></TABLE>
<TABLE id="submenu11" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"> インターフェイス</TD></TR>
<TR><TD class="submenu"> データの受け渡し</TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu12 class=OFF onclick="menushow('menu12')" onkeypress="menushow('menu12')"> JavaScriptとの連携</A><BR>
</TD></TR></TABLE>
<TABLE id="submenu12" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"> ajaxとやら </TD></TR>
<TR><TD class="submenu"> データの受け渡し</TD></TR>
</TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href="javascript:void(0)" id=menu13 class=OFF onclick="menushow('menu13')" onkeypress="menushow('menu13')"> さらばプロバイダー</A><BR>
</TD></TR></TABLE>
<TABLE id="submenu13" class="sub" border="0" cellspacing="0" summary="サブメニュー">
<TR><TD class="submenu"> 独自ドメイン </TD></TR>
<TR><TD class="submenu"> レンタルサーバー</TD></TR>
<TR><TD class="submenu"> 自宅サーバー </TD></TR>
</TABLE>
//-->
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href ="profile.html"> プロフィール </A><BR>
</TD></TR></TABLE>
<TABLE class="menu" border="0" cellspacing="0" summary="メニュー"><TR><TD>
<A href ="link.html"> リンク </A><BR>
</TD></TR></TABLE>
<DIV class="adsense">
<script type="text/javascript"><!--
google_ad_client = "pub-1711667252089735";
google_ad_width = 120;
google_ad_height = 600;
google_ad_format = "120x600_as";
google_ad_type = "text_image";
//2007-10-25: 萌えPerl
google_ad_channel = "3234662987";
google_color_border = "FFBBE8";
google_color_bg = "FFFFFF";
google_color_link = "FF6FCF";
google_color_text = "7F7F7F";
google_color_url = "0066CC";
google_ui_features = "rc:10";
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</DIV>
</TD>
<!-- MoePerlLeftMenuEnd //-->
5.実行する。
C:\moeperl\01perl>perl edit_menu.pl
このときのファイルの置いている場所とかはこんな感じです。
サイトまるごと保管しているフォルダーなので、メニュー編集に関係の無いファイルも入っていますが、まあ大丈夫でしょう。
実行している場面はこうです。
いじょ。
|