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