simplify_static_dir/lib/Directory/Simplify/File.pm

32 lines
725 B
Perl

package Directory::Simplify::File;
use strict;
use warnings;
require Cwd;
use File::Basename qw/ dirname /;
sub new {
my ($class, $rel_name) = @_;
my $self = bless {
rel_name => $rel_name,
name => Cwd::abs_path($rel_name),
}, $class;
$self->{dirname} = dirname($self->{name});
(@{$self}{qw/ dev ino mode nlink uid gid rdev size
atime mtime ctime blksize blocks /})
= lstat $self->{name};
return $self;
}
sub hash {
my $self = shift;
unless (defined $self->{_hash}) {
require Digest::SHA;
my $ctx = Digest::SHA->new;
$ctx->addfile($self->{name});
$self->{_hash} = $ctx->hexdigest;
}
return $self->{_hash};
}
1;