開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- Script言語:Perl
その他参考書籍
4.
コード(BBEdit)
sample.pl
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';
sub dump_data_for_path {
my ($path, $data, $pre) = @_;
print " " x $pre . "$path";
if (not defined $data) {
print "\n";
return;
}
my %directory = %$data;
if (%directory) {
print ", with contents:\n";
$pre += 1;
for (sort keys %directory) {
dump_data_for_path($_, $directory{$_}, $pre);
}
$pre -= 1;
} else {
print ", an empty directory\n";
}
}
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 opendir $path: $!";
my @names = readdir PATH;
closedir 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;
}
dump_data_for_path('.', data_for_path('.'), 0);
入出力結果(Terminal)
$ ./sample.pl
., with contents:
.DS_Store
.out
Gilligan:
Ginger:
Lovey:
MaryAnn:
MonkeyMan:
Oogaboogoo, with contents:
date.pm
Professor:
Skipper:
Thurston:
__pycache__, with contents:
sample.cpython-32.pyc
sample.cpython-33.pyc
barney
betty
coconet.dat
coconet_total.dat
coconet_total_2.dat
date.log
date.txt
distribute-0.6.34.tar.gz
fred
gilligan.info
ginger.info
hello_world.pl
link_test
ln.txt
ln1.txt
log
log_file.txt
lovey.info
ls.err
ls.out
maryann.info
monkeyman.info
numbers
perl_kamimura_blog.html
perl_program1
professor.info
result
sample, with contents:
.DS_Store
sample_folder, an empty directory
sample_folder copy, an empty directory
sample_folder copy 2, an empty directory
sample_folder copy 3, an empty directory
sample_folder copy 4, an empty directory
sample.pl
sample.pl.bak
sample.py
sample_folder, with contents:
.DS_Store
sample1.bak
test
sample_text
skipper.info
some_folder, with contents:
.DS_Store
ln.txt
mv1.txt
sample.pl
some_file
some_file1
some_file2
symlink.txt
sortable_hash
standings.db
test.out
test.txt
test_folder, with contents:
.DS_Store
sample, with contents:
sample.txt
test_link
thurston.info
tmp_folder, with contents:
sample.pl
some_folder, with contents:
some_file1
total_bytes.dat
untitled text 2.txt
$
pythonの場合。
sample.py
コード(BBEdit)
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
import os, glob
def dump_data_for_path(path, data, pre):
print("{0}{1}".format(" " * pre, os.path.basename(path)), end="")
if data:
print(", with contents")
pre += 1
for k in sorted(data.keys()):
dump_data_for_path(k, data[k], pre)
pre -= 1
else:
if os.path.isfile(path):
print()
elif os.path.isdir(path):
print(", an empty directory")
def data_for_path(path):
if os.path.isfile(path) or os.path.islink(path):
return
if os.path.isdir(path):
directory = {}
for name in glob.glob(path + "/*"):
directory[name] = data_for_path(name)
return directory
print("{0} is neither a file nor a directory".format(path))
return
dump_data_for_path(".", data_for_path("."), 0)
入出力結果(Terminal)
$ ./sample.py
., with contents
Gilligan:
Ginger:
Lovey:
MaryAnn:
MonkeyMan:
Oogaboogoo, with contents
date.pm
Professor:
Skipper:
Thurston:
__pycache__, with contents
sample.cpython-32.pyc
sample.cpython-33.pyc
barney
betty
coconet.dat
coconet_total.dat
coconet_total_2.dat
date.log
date.txt
distribute-0.6.34.tar.gz
fred
gilligan.info
ginger.info
hello_world.pl
link_test
ln.txt
ln1.txt
log
log_file.txt
lovey.info
ls.err
ls.out
maryann.info
monkeyman.info
numbers
perl_kamimura_blog
perl_kamimura_blog.html
perl_program1
professor.info
result
sample, with contents
sample_folder, an empty directory
sample_folder copy, an empty directory
sample_folder copy 2, an empty directory
sample_folder copy 3, an empty directory
sample_folder copy 4, an empty directory
sample.pl
sample.pl.bak
sample.py
sample_folder, with contents
sample1.bak
test
sample_text
skipper.info
some_folder, with contents
ln.txt
mv1.txt
sample.pl
some_file
some_file1
some_file2
symlink.txt sortable_hash
standings.db
test.out
test.txt
test_folder, with contents
sample, with contents
sample.txt
test_link
thurston.info
tmp_folder, with contents
sample.pl
some_folder, with contents
some_file1
total_bytes.dat
untitled text 2.txt
$
0 コメント:
コメントを投稿