【问题标题】:Perl: Directory Copy Using WindowsPerl:使用 Windows 进行目录复制
【发布时间】:2014-09-15 11:55:56
【问题描述】:

所以我正在尝试编写一个脚本来将一个目录以及所有子目录和文件复制到另一个目录(使用 windows)。

我知道这个程序涉及不可靠的依赖项(例如 E: 驱动器可用)。

与我遇到的其他一些示例相比,我的脚本看起来非常简单(我不知道它是否会复制所有子文件和目录)。

我是 Perl 新手,如果这种事情超出了初学者的能力,请不要犹豫,告诉我。

我的脚本:

use 5.16.3;
use strict;

my $datestring = localtime();

my $orig="C:/Users/Simon/My Documents";
my $new="E:/Back Up/2014/$datestring";
use File::Copy::Recursive::dircopy $orig, $new or die "Copy failed: $!";

我确定的实际问题是:

第 8 行“$new or”附近的语法错误

寻找

  1. 一个答案
  2. 帮助我解决问题的资源

谢谢

【问题讨论】:

  • @mpapec 谢谢,在这一行中dircopy($orig,$new[,$buf]) or die $!; [,$buf] 是做什么的,我该如何使用它?
  • 我猜是$orig的第二个副本的参数所以跳过它。
  • use 是加载模块的词,而不是使用模块中的函数。

标签: perl file directory copy


【解决方案1】:

需要先use 模块只是一个小错误:

use 5.16.3;
use strict;
use warnings;

# import the sub dircopy into your script
use File::Copy::Recursive qw(dircopy);

my $datestring = localtime();

my $orig = "C:/Users/Simon/My Documents";
my $new  = "E:/Back Up/2014/$datestring";

dircopy($orig, $new) or die "Copy failed: $!";

【讨论】:

  • @i 惊动了外星人,谢谢,语法错误消失了,但我现在收到我的复制失败消息,说“第 11 行的参数无效”(最后一行)。
  • 也很抱歉,可能应该提到我使用的是Windows
  • @user3001499 您可能需要转义空格,或在传递给dircopy 的字符串中添加双引号。 my $new = qq["E:/Back Up/2014/$datestring"]
  • @BradGilbert 传递给 dircopy 的字符串的双引号就是这样!谢谢。发布为答案,我可以标记为已回答
  • @user3001499 我认为这是File::Copy::Recursive 中的一个错误。
猜你喜欢
  • 2019-11-14
  • 2011-10-23
  • 2011-07-04
  • 2013-05-27
  • 1970-01-01
  • 2023-03-26
  • 2016-04-20
  • 1970-01-01
相关资源
最近更新 更多