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,所以谢谢你的知识:)