Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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
String 如何清理unix文件名的字符串?_String_Perl_Escaping - Fatal编程技术网

String 如何清理unix文件名的字符串?

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

在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 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文件名也解决了这些问题。@CJ7
mkdir-chtest&&cd-chtest&&perl-E'mkdir$\u或警告映射{chr}(0..127)
-将拒绝
(因为当前目录)还有
\0
/
。那么为什么
escape\u filename
会删除其他字符以及
/
?@CJ7文件名中有很多字符是合法的,但如果存在,则非常尴尬,尤其是对于命令行界面<代码>转义\u文件名也解决了这些问题。@CJ7
mkdir-chtest&&cd-chtest&&perl-E'mkdir$\u或警告$!$\u映射{chr}(0..127)
-将拒绝
(因为当前目录)和
\0