2014-04-28 2 views
2

Perl을 사용하여 파일의 조부모 디렉토리를 가져 오는 것에 대한 생각. realpath는 현재 작업 디렉토리를 반환으로 현재, 나는 당신이 실제로 상위 디렉토리, 그리고 조부모를 원하는처럼Perl을 사용하여 파일의 조부모 디렉토리 얻기

#!/usr/bin/perl 
use Cwd; 

my ($parentDir, $grandParent); 

$parentDir = Cwd::realpath(); 

답변

1
use Cwd; 
use File::Spec; 

my ($parentDir, $grandParent); 

$parentDir = Cwd::realpath(); 
print $parentDir,"\n"; 
my @dirs = File::Spec->splitdir($parentDir); 
pop @dirs; 
my $grandParent = File::Spec->catdir(@dirs); 
print $grandParent,"\n" 
+0

그것은 매력 – doubledecker

4

것 같습니다 현재 다음과 같은 방법으로 실행되는 파일의 상위 디렉토리를 얻을 수 있어요 .

use Cwd; 
use File::Spec; 

print "Parent Dir: ", abs_path(File::Spec->updir()), "\n"; 

그러나, 조부모를 얻기 위해, 다음 작동합니다 :

print "Gramps: ", abs_path(File::Spec->catdir((File::Spec->updir) x 2)), "\n"; 
+0

이 정말 좋은처럼 작동합니다. File :: Spec-> catdir ((File :: Spec-> updir) x 2)은 어떻게 작동합니까? x 2가리스트의 연산자가 아닌가? –

+1

예, ['x'] (http://perldoc.perl.org/perlop.html#Multiplicative-Operators)는 반복 연산자입니다. 그것은'(File :: Spec-> updir, File :: Spec-> updir)'을 작성하는 바로 가기 방법이었습니다. – Miller

+0

File :: Spec-> updir()은 실제 부모 디렉토리가 아닌 ".."을 반환합니다. –

관련 문제