Perl에서 파일을 아직 만들지 않은 디렉토리 트리로 복사하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/229357

  •  04-07-2019
  •  | 
  •  

문제

가장 좋은 방법은 무엇입니까? 아직 생성되지 않은 대상 디렉토리 트리에 파일을 복사하려면?

같은 것

copy("test.txt","tardir/dest1/dest2/text.txt");

디렉토리 이후로 작동하지 않습니다 tardir/dest1/dest2 아직 존재하지 않습니다. Perl에서 디렉토리 생성으로 복사하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

use File::Path;
use File::Copy;

my $path = "tardir/dest1/dest2/";
my $file = "test.txt";

if (! -d $path)
{
  my $dirs = eval { mkpath($path) };
  die "Failed to create $path: $@\n" unless $dirs;
}

copy($file,$path) or die "Failed to copy $file: $!\n";

다른 팁

use File::Basename qw/dirname/;
use File::Copy;

sub mkdir_recursive {
    my $path = shift;
    mkdir_recursive(dirname($path)) if not -d dirname($path);
    mkdir $path or die "Could not make dir $path: $!" if not -d $path;
    return;
}

sub mkdir_and_copy {
    my ($from, $to) = @_;
    mkdir_recursive(dirname($to));
    copy($from, $to) or die "Couldn't copy: $!";
    return;
}

파일 :: 복사 :: 재귀:: fcopy ()는 비 코어이지만 파일 :: path :: mkpath () 및 file :: copy () 솔루션을 더 짧은 것으로 결합하고 파일 :: copy와 달리 권한을 보존합니다. 또한 다른 멋진 유틸리티 기능도 포함되어 있습니다.

복사를 수행하지만 디렉토리를 만들기위한 다른 답변을 확인하십시오. 경로 :: 클래스 사용하기에 매우 좋습니다.

use Path::Class;

my $destination_file  = file('tardir/dest1/dest2/test.txt');
$destination_file->dir->mkpath;

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