免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3534 | 回复: 2
打印 上一主题 下一主题

perl在-T模式下匹配中文的问题(如何untaint含汉字的变量) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-03-22 17:11 |只看该作者 |倒序浏览
做一个dms系统,在处理中文名时候,遇到一个问题。
我用如下的漂白函数漂白包含中文的变量时,无法通过。
  

sub UnTaint{
     my ($checkdir)=@_;
          if ($checkdir=~/^([-\/\@\w.\.\:;,\=]+)$/){
             my $windir=$1;
             return $windir;
             }
}


例:
my $a = "我爱北京天安门.txt";
$a = &UnTaing($a);
print $a;

此时$a=空了。


程序运行在-wT模式下,如果不对这些变量进行漂白就无法运行。
请组里的各位给一个解决办法。
只要能将包含中文的变量漂白即可。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-03-23 18:27 |只看该作者

perl在-T模式下匹配中文的问题(如何untaint含汉字的变量)

if ($checkdir=~/([\w\W]+)/){
my $windir=$1;
return $windir;
}

這樣就好啦....
把所有的code都包含了...

论坛徽章:
0
3 [报告]
发表于 2004-03-24 16:37 |只看该作者

perl在-T模式下匹配中文的问题(如何untaint含汉字的变量)

万分感谢,我是这样搞的。
sub UTGB{
my ($checkdir)=@_;
if ($checkdir =~ /^([\S.]+)$/){
       my $windir=$1;
        return $windir;
    }
}

殊途同归,我们的想法是一样的,我对匹配的应用一直不太了解,这次是有了一点点的认识。
我们这样的做法虽然漂白了包含中文的变量,但是实际上-T模式的优点被我们抛弃了。
所以我只用这个函数untaint包含中文的变量,其他的字符变量还是用标准的方式来untaint.

感谢apile兄的帮助。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP