Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl替换以更改文件路径_Perl_Substitution - Fatal编程技术网

Perl替换以更改文件路径

Perl替换以更改文件路径,perl,substitution,Perl,Substitution,我对此很生气,我试图改变目录路径,如代码所示,但它就是不起作用,我做错了什么 我希望$fulltitle是\\mynas\data\music\FABRICLive\17-Rhodes For D-Furney.mp3 my $find = 'C:\Users\Bell'; my $replace = '\\mynas\data\music'; my $fulltitle = 'C:\Users\Bell\FABRICLive\17 - Rhodes For D - Furney.mp3'; $

我对此很生气,我试图改变目录路径,如代码所示,但它就是不起作用,我做错了什么

我希望
$fulltitle
\\mynas\data\music\FABRICLive\17-Rhodes For D-Furney.mp3

my $find = 'C:\Users\Bell';
my $replace = '\\mynas\data\music';
my $fulltitle = 'C:\Users\Bell\FABRICLive\17 - Rhodes For D - Furney.mp3';
$fulltitle =~ s/$find/$replace/;
print ("$fulltitle\n");

会给你一个关于什么是错误的线索。

my $find      = 'C:\Users\Bell';
my $replace   = '\\mynas\data\music';
my $fulltitle = 'C:\Users\Bell\FABRICLive\17 - Rhodes For D - Furney.mp3';

$fulltitle    =~ s/\Q$find\E/${replace}/;
print "$fulltitle\n";
会给你一个线索,告诉你出了什么问题

my $find      = 'C:\Users\Bell';
my $replace   = '\\mynas\data\music';
my $fulltitle = 'C:\Users\Bell\FABRICLive\17 - Rhodes For D - Furney.mp3';

$fulltitle    =~ s/\Q$find\E/${replace}/;
print "$fulltitle\n";

您需要使用
\Q
\E
禁用匹配中的反斜杠元字符。


注意:替换将
\\
转换为
\


您需要使用
\Q
\E
禁用匹配中的反斜杠元字符。



注意:替换将
\\
转换为
\

使用正则表达式吸盘操纵路径

use Path::Class::Dir qw();
use Path::Class::File qw();
my $old = Path::Class::Dir->new_foreign('Win32', 'C:\Users\Bell');
my $new = Path::Class::Dir->new_foreign('Win32', '\\\\mynas\data\music');
my $file = Path::Class::File->new_foreign('Win32', 'C:\Users\Bell\FABRICLive\17 - Rhodes For D - Furney.mp3');
$file->relative($old)->absolute($new)->stringify
# '\\mynas\data\music\FABRICLive\17 - Rhodes For D - Furney.mp3'

您在目录的符号中犯了一个错误。字符串文本中的双反斜杠必须用反斜杠转义,这就是工作原理。

用正则表达式操纵路径很糟糕

use Path::Class::Dir qw();
use Path::Class::File qw();
my $old = Path::Class::Dir->new_foreign('Win32', 'C:\Users\Bell');
my $new = Path::Class::Dir->new_foreign('Win32', '\\\\mynas\data\music');
my $file = Path::Class::File->new_foreign('Win32', 'C:\Users\Bell\FABRICLive\17 - Rhodes For D - Furney.mp3');
$file->relative($old)->absolute($new)->stringify
# '\\mynas\data\music\FABRICLive\17 - Rhodes For D - Furney.mp3'

您在目录的符号中犯了一个错误。字符串文本中的双反斜杠必须用反斜杠转义,这就是它的工作原理。

这有帮助吗?这有帮助吗?谢谢,我以前从未听说过quotemeta,所以谢谢你的知识:)非常感谢,我以前从未听说过quotemeta,所以谢谢你的知识:)