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 )