「Path::Class」の版間の差分

提供: dsk's note
移動: 案内検索
33行目: 33行目:
 
</syntaxhighlight>
 
</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]]
 
[[Category: perl]]
 
{{google/ad/01}}
 
{{google/ad/01}}

2015年5月12日 (火) 05:05時点における版

ディレクトリ配下にあるファイルリストを作成(再帰的)

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]|;
  }
}

めも

  1. absolute 絶対パス
  2. relative 相対パス
  3. basename ファイルネーム
  4. is_dir ディレクトリだった場合1
  5. next if $file->is_dir; #ディレクトリはスキップ
  6. my $file = $dir->next
  7. サブディレクトリの取得 my $subdir = $dir->subdir('baz'); #foo/bar/baz
  8. 親ディレクトリの取得 my $parent = $dir->parent; # foo
  1. ファイルの中身をすべて取得
  2. eval { $f = $file->slurp; }; # ファイルがない場合
  3. if ($@) { die "cannot open file : $!"; }