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

时间:2017-04-13 05:47:46

标签: string perl escaping

在perl中,如何清理在基于Unix的系统中用作文件名的字符串?

例如。 AX / 1234 / BB显然需要以某种方式处理正斜杠。

是否有任何模块可以解决此问题?

2 个答案:

答案 0 :(得分:3)

unix文件名可以包含除$fn和NUL之外的任何字符,因此以下内容可确保warn("Invalid file name") if $fn =~ m{[/\0]}; 是有效的文件名。

$fn =~ s{[/\0]}{_}g;

但你没有说你想要检测错误的文件名;你说你想要消毒它们。但是,你没有说怎么做。也许您希望与他人一起替换非法人物?如果是这样,您可以使用以下内容:

ActionFilterAttribute

答案 1 :(得分:2)

File::Util function escape_filename就是这样做的。

use File::Util;
$result = escape_filename($str);