開発環境
- 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 コメント:
コメントを投稿