perl - クラスライブラリ - ファイルをリスト

 
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");

	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」のファイルをリストして表示します。
 
 
カウンタバックグラウンド