開発環境
- Mac OS X Snow Leopard (OS)
- TextWrangler(Text Editor) (いずれはBBEditを入手したい!)
- Script言語:Perl
『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也、田中 慎司、吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9) の9章(リファレンスを使った実践的なテクニック), 9.9(練習問題)、4を解いてみる。
4.
コード(TextWrangler)
#!/usr/bin/perl
use strict;
use warnings;
sub data_for_path{
my $path = shift;
if(-f $path or -l $path){
return undef;
}
if (-d $path){
my %directory;
opendir PATH, $path or
die "Cannot open dir $path: $!";
my @names = readdir PATH;
for my $name (@names){
next if $name eq "." or $name eq "..";
$directory{$name} =
data_for_path("$path/$name");
}
return \%directory;
}
warn "$path is neither a file "
."nor a directory\n";
return undef;
}
sub dump_data_for_path{
my $path = shift;
my $data = shift;
my $indent = shift || "";
print "$indent$path";
if (not defined $data){
print "\n";
return;
}
my %directory = %$data;
if(%directory){
if(values %directory == 1){
print ", with a content:\n";
} else {
print ", with contents:\n";
}
for (sort keys %directory){
dump_data_for_path(
$_,
$directory{$_},
"$indent ");
}
} else {
print ", an empty directory\n";
}
}
dump_data_for_path(".",data_for_path("."));
Desktopに適当にフォルダ、ファイルの階層を作成して実験。
入出力結果(Terminal)
確認できた!
0 コメント:
コメントを投稿