문제

Perl에서는 어떻게 하위 디렉토리를 생성하고 동시에 부모 디렉토리가 존재하지 않으면 만들 수 있습니까? 유닉스의 mkdir -p 명령처럼?

도움이 되었습니까?

해결책

use File::Path qw(make_path);
make_path("path/to/sub/directory");

감가 상각 된 mkpath 및 선호하는 make_path는 보관 된 Perl 5 Porters 스레드의 토론에서 비롯된 것입니다. 여기.

간단히 말해서, Perl 5.10 테스트는 makepath () 인터페이스의 인수 구문 분석에서 어색함을 나타 냈습니다. 따라서 기능에 대한 옵션을 설정하기위한 최종 인수로 해시를 취한 더 간단한 버전으로 대체되었습니다.

다른 팁

파일에서 mkpath를 사용하십시오 :: 경로 모듈 :

use File::Path qw(mkpath);
mkpath("path/to/sub/directory");

'mkdir -p'기능이있는 PERL 모듈을 찾고 있다면 다음 코드가 작동하는지 친절하게 무시하십시오.

my $dir = '/root/example/dir';

system ("mkdir -p $dir 2> /dev/null") == 0 
    or die "failed to create $dir. exiting...\n";

모듈을 사용할 수는 있지만 코드를 켜려는 각 서버에 모듈을 설치해야합니다. 나는 일반적으로 mkdir와 같은 작업에 시스템 기능을 사용하는 것을 선호합니다. 디렉토리를 만들려면 한 번만 필요할 때 모듈을 가져오고 호출하는 데 더 적은 오버 헤드이기 때문입니다.

심판 http://perldoc.perl.org/file/path.html

"make_path 함수는 주어진 디렉토리가 Unix 명령과 마찬가지로 [sic!]에 존재하지 않으면 주어진 디렉토리를 만듭니다. mkdir -p"

mkdir ()를 사용하면 Perl 스크립트에서 디렉토리를 만들 수 있습니다.

예시:

use strict;
use warnings;

my $directory = "tmp";

unless(mkdir($directory, 0755)) {
        die "Unable to create $directory\n";

이 프로그램은 0755로 설정된 권한이있는 "TMP"라는 디렉토리를 만듭니다 (소유자 만 디렉토리에 쓸 수있는 권한이 있으며 그룹 멤버 및 기타는 파일을보고 디렉토리 내용을 나열 할 수 있습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top