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

提供: dsk's note
移動: 案内検索
(めも)
 
(同じ利用者による、間の1版が非表示)
29行目: 29行目:
 
   elsif($d->is_dir ne 1){
 
   elsif($d->is_dir ne 1){
 
     print qq|<br>$basename</a> [$mtime]|;
 
     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)
 
   }
 
   }
 
}
 
}
34行目: 47行目:
  
 
===めも===
 
===めも===
absolute 絶対パス
+
*absolute 絶対パス
relative 相対パス
+
*relative 相対パス
basename ファイルネーム
+
*basename ファイルネーム
is_dir ディレクトリだった場合1
+
*is_dir ディレクトリだった場合1
next if $file->is_dir; #ディレクトリはスキップ
+
*next if $file->is_dir; #ディレクトリはスキップ
my $file = $dir->next
+
*my $file = $dir->next
サブディレクトリの取得 my $subdir = $dir->subdir('baz'); #foo/bar/baz
+
*サブディレクトリの取得 my $subdir = $dir->subdir('baz'); #foo/bar/baz
親ディレクトリの取得 my $parent = $dir->parent; # foo
+
*親ディレクトリの取得 my $parent = $dir->parent; # foo
  
ファイルの中身をすべて取得
+
*ファイルの中身をすべて取得
eval { $f = $file->slurp; }; # ファイルがない場合
+
*eval { $f = $file->slurp; };
if ($@) { die "cannot open file : $!"; }
+
*if ($@) { die "cannot open file : $!"; }
 
[[Category: perl]]
 
[[Category: perl]]
 
{{google/ad/01}}
 
{{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 : $!"; }