「Path::Class」の版間の差分
提供: dsk's note
(ページの作成:「#ディレクトリ配下にあるファイルリストを作成(再帰的) <syntaxhighlight lang="perl"> my @files; Path::Class::Dir->new("/home/dsktnk/www/")->recur...」) |
細 |
||
(同じ利用者による、間の7版が非表示) | |||
1行目: | 1行目: | ||
− | + | {{google/ad/01}} | |
+ | |||
+ | ===ディレクトリ配下にあるファイルリストを作成(再帰的)=== | ||
<syntaxhighlight lang="perl"> | <syntaxhighlight lang="perl"> | ||
my @files; | my @files; | ||
10行目: | 12行目: | ||
); | ); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | ===ディレクトリ配下のディレクトリとファイルを表示=== | ||
+ | <syntaxhighlight lang="perl"> | ||
+ | my @dir = dir($path)->children; | ||
+ | @dir = sort {$b->is_dir <=> $a->is_dir} @dir; | ||
+ | |||
+ | for my $d(@dir){ | ||
+ | my $basename = $d->basename; | ||
+ | my $fileurl = $d->relative; | ||
+ | my $mtime = localtime($d->stat->mtime); | ||
+ | |||
+ | if ($d->is_dir){ | ||
+ | print qq|<b>$basename</b>||; | ||
+ | } | ||
+ | |||
+ | elsif($d->is_dir ne 1){ | ||
+ | print qq|<br>$basename</a> [$mtime]|; | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===ディレクトリ配下にあるディレクトリリストと、ファイルリストを作成=== | ||
+ | <syntaxhighlight lang="perl"> | ||
+ | my @dir = dir($path)->children; | ||
+ | my (@dirs,@files); | ||
+ | for my $d (@dir){ | ||
+ | if ($d->is_dir){ | ||
+ | push(@dirs, $d); | ||
+ | }else{ | ||
+ | push(@files, $d) | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | ===めも=== | ||
+ | *absolute 絶対パス | ||
+ | *relative 相対パス | ||
+ | *basename ファイルネーム | ||
+ | *is_dir ディレクトリだった場合1 | ||
+ | *next if $file->is_dir; #ディレクトリはスキップ | ||
+ | *my $file = $dir->next | ||
+ | *サブディレクトリの取得 my $subdir = $dir->subdir('baz'); #foo/bar/baz | ||
+ | *親ディレクトリの取得 my $parent = $dir->parent; # foo | ||
+ | |||
+ | *ファイルの中身をすべて取得 | ||
+ | *eval { $f = $file->slurp; }; | ||
+ | *if ($@) { die "cannot open file : $!"; } | ||
+ | [[Category: perl]] | ||
+ | {{google/ad/01}} |
2015年5月12日 (火) 07:39時点における最新版
ディレクトリ配下にあるファイルリストを作成(再帰的)
my @files; Path::Class::Dir->new("/home/dsktnk/www/")->recurse( callback => sub { my $file = shift; return if $file->is_dir; #ディレクトリはスキップ push(@files, $file); }, );
ディレクトリ配下のディレクトリとファイルを表示
my @dir = dir($path)->children; @dir = sort {$b->is_dir <=> $a->is_dir} @dir; for my $d(@dir){ my $basename = $d->basename; my $fileurl = $d->relative; my $mtime = localtime($d->stat->mtime); if ($d->is_dir){ print qq|<b>$basename</b>||; } elsif($d->is_dir ne 1){ print qq|<br>$basename</a> [$mtime]|; } }
ディレクトリ配下にあるディレクトリリストと、ファイルリストを作成
my @dir = dir($path)->children; my (@dirs,@files); for my $d (@dir){ if ($d->is_dir){ push(@dirs, $d); }else{ push(@files, $d) } }
めも
- absolute 絶対パス
- relative 相対パス
- basename ファイルネーム
- is_dir ディレクトリだった場合1
- next if $file->is_dir; #ディレクトリはスキップ
- my $file = $dir->next
- サブディレクトリの取得 my $subdir = $dir->subdir('baz'); #foo/bar/baz
- 親ディレクトリの取得 my $parent = $dir->parent; # foo
- ファイルの中身をすべて取得
- eval { $f = $file->slurp; };
- if ($@) { die "cannot open file : $!"; }