File-PathInfo
view release on metacpan or search on metacpan
lib/File/PathInfo.pm view on Meta::CPAN
$self->{_data}->{_stat} = $data;
}
return $self->{_data}->{_stat};
}
sub _time_format {
my $self = shift;
$self->{time_format} ||= 'yyyy/mm/dd hh:mm';
return $self->{time_format};
}
# this is to replace
# all these :
# sub is_binary {
# my $self = shift;
# return $self->_stat->{is_binary};
# }
sub ___make_get_premethod {
my $method_data = shift;
no strict 'refs';
for my $method_name ( @_ ){
*{"File\:\:PathInfo\:\:$method_name"} = sub { return $_[0]->$method_data->{$method_name} };
}
return;
}
sub get_datahash {
my $data = {};
for my $method ( qw(_abs _rel _stat) ){
KEY: while( my ($k,$v) = each %{$_[0]->$method} ){
defined $v or next KEY;
$data->{$k} =$v;
}
}
$data;
}
sub _error { $_[0]->{_data}->{_errors}.="File::Info, $_[1]\n" }
sub errstr {
my $self = shift;
($self->{_data}->{_errors} = $_[0]) if $_[0];
$self->{_data}->{_errors}
}
sub exists {
my $self = shift;
defined $self->{_data}->{exists} or confess('must call set() first');
$self->{_data}->{exists};
}
# NON OO
sub abs_path_n {
my $absPath = shift;
return $absPath if $absPath =~ m{^/$};
my @elems = split m{/}, $absPath;
my $ptr = 1;
while($ptr <= $#elems)
{
if($elems[$ptr] eq q{})
{
splice @elems, $ptr, 1;
}
elsif($elems[$ptr] eq q{.})
{
splice @elems, $ptr, 1;
}
elsif($elems[$ptr] eq q{..})
{
if($ptr < 2)
{
splice @elems, $ptr, 1;
}
else
{
$ptr--;
splice @elems, $ptr, 2;
}
}
else
{
$ptr++;
}
}
return $#elems ? join q{/}, @elems : q{/};
# by JohnGG
# http://perlmonks.org/?node_id=603442
}
1;
# see lib/File/PathInfo.pod
( run in 2.407 seconds using v1.01-cache-2.11-cpan-71847e10f99 )