おそらくこんなことするモジュールとかあると思うんだけど、簡単そうなので自力で。
ただしperl5.6以降限定。
----------------------------------------------------------------------------------------------
use strict;
my $target_dir = './dir';
print "Content-type: text/plain\n\n";
&read_all($target_dir);
sub read_all{
my ($dir) = @_;
opendir(my $dh,$dir)|| die "Directory open error :$dir";
print '__DIR_'.$dir.'_START__'."\n";
while(my $doc = readdir($dh)){
if($doc !~ /^\.+$/){
if(-d "$dir/$doc"){
&read_all("$dir/$doc"); ##ループ
}
elsif(-e "$dir/$doc" && $doc =~ /^[\d\w]+\.[\d\w]+$/){ ##ここの正規表現はお好きなように
open(FILE,"$dir/$doc") || die "File open error :$dir/$doc";
print '__FILE_'.$doc.'_START__'."\n";
while(<FILE>){
print $_;
}
print '__FILE_'.$doc.'_END__'."\n".;
close(FILE);
}
}
else{
next;
}
}
print '__DIR_'.$dir.'_END__'."\n";
closedir($dh);
}
exit;
-----------------------------------------------------------------------------------------
※perl5.6以降だと、ループの度にディレクトリハンドル(上で言う$dh)を自動生成してくれる。そうじゃないと一回目でclosedirされて多分ループが続かない。
※ヘッダ出力はお好きなように。
※使い道・・・・・多分ほとんどない。
ダウンロードしたりLWP転送するときも、tar.gzとかzipにして一発出力したほうが手っ取り早いから・・・
圧縮展開が面倒くさくて、ファイルも少量のときくらいはこれでやってもいいと思うけど。
ただしperl5.6以降限定。
----------------------------------------------------------------------------------------------
use strict;
my $target_dir = './dir';
print "Content-type: text/plain\n\n";
&read_all($target_dir);
sub read_all{
my ($dir) = @_;
opendir(my $dh,$dir)|| die "Directory open error :$dir";
print '__DIR_'.$dir.'_START__'."\n";
while(my $doc = readdir($dh)){
if($doc !~ /^\.+$/){
if(-d "$dir/$doc"){
&read_all("$dir/$doc"); ##ループ
}
elsif(-e "$dir/$doc" && $doc =~ /^[\d\w]+\.[\d\w]+$/){ ##ここの正規表現はお好きなように
open(FILE,"$dir/$doc") || die "File open error :$dir/$doc";
print '__FILE_'.$doc.'_START__'."\n";
while(<FILE>){
print $_;
}
print '__FILE_'.$doc.'_END__'."\n".;
close(FILE);
}
}
else{
next;
}
}
print '__DIR_'.$dir.'_END__'."\n";
closedir($dh);
}
exit;
-----------------------------------------------------------------------------------------
※perl5.6以降だと、ループの度にディレクトリハンドル(上で言う$dh)を自動生成してくれる。そうじゃないと一回目でclosedirされて多分ループが続かない。
※ヘッダ出力はお好きなように。
※使い道・・・・・多分ほとんどない。
ダウンロードしたりLWP転送するときも、tar.gzとかzipにして一発出力したほうが手っ取り早いから・・・
圧縮展開が面倒くさくて、ファイルも少量のときくらいはこれでやってもいいと思うけど。

コメントする