- 1. ファイルをリスト
- 2. 使用方法
1. ファイルをリスト
ファイルをリストするモジュールを作ってみました。
ファイル名を FileList.pm としています。
#
package FileList;
=encoding utf8
=head1 NAME - 名称
FileList - ファイルリストクラス
=head2 SYNOPSIS - 使い方
use FileList;
$list = FileList->new();
$filelist = $list->get(ディレクトリ, 拡張子);
=head1 更新履歴
新規:2018-01-09 ShowKit
=head2 Copyright
Copyright (C) 2018-01-09 Show.Kit by SingNet
=cut
use strict;
sub new
{
my ($class) = @_;
my $self = {};
return bless($self, $class);;
}
sub get
{
my ($self, $root, $ext, $filelist) = @_;
opendir(DIR, $root) or die("Can't get directory.:$root($!)");
my @list = grep /^[^\.]/, readdir DIR;
closedir DIR;
foreach my $file (@list)
{
if (-d "$root$file") # ディレクトリの場合は再帰検索を行う
{
$filelist = $self->get("$root$file/", $ext, $filelist);
next;
}
if ($file =~ /$ext$/) # ファイルの場合は指定した拡張子と一致するならばリストする
{
push @$filelist, "$root$file";
}
}
return $filelist;
}
1;
4~26行は、ドキュメントなので説明しません。
30~35行は、コンストラクタです。
37~61行が、実際の処理。
63行は、おまじないで、これがないと実行時にエラーになります。
2. 使用方法
使用時には、メインで(ファイル名を「main.pl」としておきます)
#!/usr/local/bin/perl
BEGIN
{
use lib './';
};
use strict;
use FileList;
sub main
{
my @argv = @_;
my $root = $argv[0];
my $list = FileList->new();
my $filelist = $list->get($root, 'txt');
foreach my $name (sort(@$filelist))
{
print $name . "\n";
}
}
main(@ARGV);
てな記述をしておいて
perl ./main.pl ./
と実行すると、カレントディレクトリ以下の、拡張子「.txt」のファイルをリストして表示します。
|
|