当我尝试打开目录时出错

Error when i try to opendir

我被这段代码卡住了。也许原因是路径中的重音字符,我不知道。我使用的代码如下

my $var2 = realpath('C:\Users\brmelovi\Script\backups');
$source1 = 'N:\NBS_AR\COLLECTION.0 Times.0 Collections México. 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:\Users\brmelovi\Script\backups');
$source1 = 'N:\NBS_AR\SISTEMAS AR\Macro 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;

我的 header 和 use 声明

use v5.28;
use strict;
use utf8;
use warnings;

use Cwd 'realpath';
use autodie;
use Path::Tiny;

错误信息是

Error opendir on 'N:/NBS_AR/COLLECTION/1.0 Times/2.0 Collections MΘxico/1. Macro de solicitaτπo de Desglose': No such file or directory at backup_script.pl line 24.

编辑: 使用

解决的问题
use Encode::Local;
use Encode;

感谢解决粘滞位。

是的,可能是路径中的特殊字符。至少我可以在 Windows.

上的 UTF-8 编码脚本中重现尝试 opendir() 目录 1. Macro de solicitação de Desglose 时所描述的行为

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

...
use Encode::Locale;
use Encode;
...
$source1 = encode(locale => 'N:\NBS_AR\COLLECTION.0 Times.0 Collections México. Macro de solicitação de Desglose');
...

这对我有用。