perl - 当我尝试打开目录时出错
问题描述
我被困在这段代码上。也许原因是路径中的重音字符,我不知道。我正在使用的代码如下
my $var2 = realpath('C:\Users\brmelovi\Script\backups');
$source1 = 'N:\NBS_AR\COLLECTION\1.0 Times\2.0 Collections México\1. 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;
我的标题和use
声明
use v5.28;
use strict;
use utf8;
use warnings;
use Cwd 'realpath';
use autodie;
use Path::Tiny;
错误信息是
'N:/NBS_AR/COLLECTION/1.0 Times/2.0 Collections MΘxico/1 上的错误 opendir。Macro de solicitaτπo de Desglose':在 backup_script.pl 第 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\1.0 Times\2.0 Collections México\1. Macro de solicitação de Desglose');
...
这对我有用。
推荐阅读
- android-camera2 - 如何使用android camera2处理视频的每一帧并在帧之间移动像素
- reactjs - React-Native 一次性绑定
- android - 与 LiveData 的数据绑定
使 BindingAdapter 上的值无效? - mysql - linux下安装RMySQL时如何选择MySQL版本
- php - 打印php数组值
- php - Laravel 任务计划与数据库中的 cron 列
- javascript - 成功登录时显示 LoggedIn 用户名 [代码中出现 JSX 和路由器相关错误] --
- java - 将 Groovy RootLoader 与 Java 8 SystemClassLoader 集成
- android - Xamarin Android:HttpRequestException:没有路由到主机
- git - 如何给出从 gitlab 获取提交历史记录和结帐的日期?