I am stuck on this piece of code. Maybe the cause is the accented characters inn the path, I don't know. The code that I'm using is below
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;
The file and the path exist. My code already works with another path and name, like this
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;
My header and use
statements
use v5.28;
use strict;
use utf8;
use warnings;
use Cwd 'realpath';
use autodie;
use Path::Tiny;
The error message is
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.
Edit: Problem solved by the use of
use Encode::Local;
use Encode;
Thanks for the solution sticky bit.
Yes, it's probably the special characters in the path. At least I could reproduce the described behavior trying to opendir()
a directory 1. Macro de solicitação de Desglose
in an UTF-8 encoded script on Windows.
Try to use Encode::Locale to properly encode the string prior passing it to 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');
...
That worked for me.