尝试打开目录时出错

  • 本文关键字:出错 perl opendir
  • 更新时间 :
  • 英文 :


我被这段代码卡住了。也许原因是路上的口音字符,我不知道。我使用的代码低于

my $var2 = realpath('C:UsersbrmeloviScriptbackups');
$source1 = 'N:NBS_ARCOLLECTION1.0 Times2.0 Collections México1. Macro de solicitação de Desglose';
$name1   = 'macro';
my $absol = path($source1)->absolute;
my @dire  = $absol->children( qr/^$name1/);
say $dire[0];
$dire[0]->copy($var2);
return 1;

文件和路径存在。我的代码已经可以使用另一个路径和名称,比如这个

my $var2 = realpath('C:UsersbrmeloviScriptbackups');
$source1 = 'N:NBS_ARSISTEMAS ARMacro Credit Analysis & Collection';
$name1   = 'Credit Analysis';
my $absol = path($source1) -> absolute;
my @dire  = $absol->children( qr/^$name1/);
say $dire[0];
$dire[0]->copy($var2);
return 1;

我的标题和use语句

use v5.28;
use strict;
use utf8;
use warnings;
use Cwd 'realpath';
use autodie;
use Path::Tiny;

错误消息为

'N:/NBS_AR/COLECTION/1.0 Times/2.0 Collections MΘxico/1上的错误opendir。宏de solitaτπo de Desglose':在backup_script.pl第24行没有这样的文件或目录。

编辑:使用解决的问题

use Encode::Local;
use Encode;

谢谢你提供的粘性溶液。

是的,可能是路径中的特殊字符。至少我可以在Windows上用UTF-8编码的脚本重现所描述的尝试opendir()目录1. Macro de solicitação de Desglose的行为。

在将字符串传递给opendir()之前,请尝试使用Encode::Locale对其进行正确编码。

...
use Encode::Locale;
use Encode;
...
$source1 = encode(locale => 'N:NBS_ARCOLLECTION1.0 Times2.0 Collections México1. Macro de solicitação de Desglose');
...

这对我很有效。

相关内容

  • 没有找到相关文章

最新更新