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

提供: dsk's note
移動: 案内検索
9行目: 9行目:
 
     },
 
     },
 
);
 
);
 +
</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><a href="$baseurl\doc3.cgi?d=$basename">$basename</a></b>||;
 +
  }
 +
 +
  elsif($d->is_dir ne 1){
 +
    print qq|<br><a href="$baseurl$fileurl">$basename</a></b> [$mtime]|;
 +
  }
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>

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

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

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><a href="$baseurl\doc3.cgi?d=$basename">$basename</a></b>|;
  }
 
  elsif($d->is_dir ne 1){
    print qq|<br><a href="$baseurl$fileurl">$basename</a></b> [$mtime]|;
  }
}