String 如何清理unix文件名的字符串?
在perl中,如何清理在基于Unix的系统中用作文件名的字符串 AX/1234/BB显然需要以某种方式处理前斜杠 是否有处理此问题的模块?正是这样做的String 如何清理unix文件名的字符串?,string,perl,escaping,String,Perl,Escaping,在perl中,如何清理在基于Unix的系统中用作文件名的字符串 AX/1234/BB显然需要以某种方式处理前斜杠 是否有处理此问题的模块?正是这样做的 use File::Util; $result = escape_filename($str); 政府正是这样做的 use File::Util; $result = escape_filename($str); unix文件名可以包含除/和NUL之外的任何字符,因此以下内容确保$fn是有效的文件名 warn("Invalid file na
use File::Util;
$result = escape_filename($str);
政府正是这样做的
use File::Util;
$result = escape_filename($str);
unix文件名可以包含除
/
和NUL之外的任何字符,因此以下内容确保$fn
是有效的文件名
warn("Invalid file name") if $fn =~ m{[/\0]};
但您并没有说要检测坏文件名;你说你想给他们消毒。但是,你没有说怎么做。也许您希望用其他字符替换非法字符?如果是,您可以使用以下选项:
$fn =~ s{[/\0]}{_}g;
unix文件名可以包含除
/
和NUL之外的任何字符,因此以下内容确保$fn
是有效的文件名
warn("Invalid file name") if $fn =~ m{[/\0]};
但您并没有说要检测坏文件名;你说你想给他们消毒。但是,你没有说怎么做。也许您希望用其他字符替换非法字符?如果是,您可以使用以下选项:
$fn =~ s{[/\0]}{_}g;
那么为什么
escape_filename
会去掉其他字符以及/
?@CJ7有很多字符在文件名中是合法的,但如果存在这些字符,则会非常尴尬,尤其是在命令行界面中<代码>转义\u文件名也解决了这些问题。@CJ7mkdir-chtest&&cd-chtest&&perl-E'mkdir$\u或警告映射{chr}(0..127)
-将拒绝
(因为当前目录)还有\0
和/
。那么为什么escape\u filename
会删除其他字符以及/
?@CJ7文件名中有很多字符是合法的,但如果存在,则非常尴尬,尤其是对于命令行界面<代码>转义\u文件名也解决了这些问题。@CJ7mkdir-chtest&&cd-chtest&&perl-E'mkdir$\u或警告$!$\u映射{chr}(0..127)
-将拒绝
(因为当前目录)和\0
和
。