免费注册 查看新帖 |

Chinaunix

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

perl新人求助if(m@[*?\[\]]@) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-26 12:13 |只看该作者 |倒序浏览
在一篇批量反编译chm文档的脚本的精华文章里,看到一句 判断空格的这句话是什么意思啊,if(m@[*?\[\]]@)


#!/usr/bin/perl


#Decompile .chm file to html format.


#Author Huang Yong.


#2007-9-10


#Usage:progname filename1 filename2 ...


#可使用通配符



use File::Copy;
use File::Basename;

sub decompiler
{
    my $chmfile = $_[0];
    my $tmp = "temp";
    my $i=1;
    while (-e "$tmp.chm" or -d $tmp){
    $tmp = $tmp.$i;
    $i++;
    }   
    die "Cannot open file $chmfile" unless (-e $chmfile);
    
    copy($chmfile,"$tmp.chm") or die "Copy failed: $!";
    
    mkdir ("$tmp") or die "Cannot create temp!";
    `hh.exe -decompile $tmp $tmp.chm`;
    my $html_dir = basename($chmfile);
    $html_dir =~ s/\.chm$//;
    move("$tmp",$html_dir);
    unlink ("$tmp.chm");
}

for(@ARGV){
    my @chmfile;
    if(m@[*?\[\]]@){
       @chmfile =glob($_);
    }
    else{
       push(@chmfile,$_);
    }   
    for $file(@chmfile){
        print "正在反编译 $file,请稍候...\n";
        decompiler($file);
        print "文件$file编译完成。\n"
    }   
}  

论坛徽章:
0
2 [报告]
发表于 2007-10-26 13:02 |只看该作者
就是模式匹配啊,也就是m/your regex/
模式匹配的分割符不一定就是"/",还有可能是m(regex),m<regex>等等

[ 本帖最后由 ubac 于 2007-10-26 13:06 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-10-26 13:45 |只看该作者
谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP