文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>脚本编写大赛,高级组1: could I know your tel..

脚本编写大赛,高级组1: could I know your tel..

时间:2008-03-21  来源:starB6

#!C:\Perl\bin\perl -w #  思路不是我的,是专家的,但是专家后边的部分太专业我看不懂得,就自己改成自己的方式了。 use strict;
use warnings;
print "Please inout the number:\n";
chomp(my $number=<>);
die "invalid numbers:'$number'\n" unless $number =~ /^\d{7}$/;
# 如果输入的不是7个数字,就判断输入错误 my @groups=qw(ABC DEF GHI JKL MNO PRS TUV WXY);
my $group;
my ($letter,$digits);
 foreach  my $digit (2..9)
{
  my $group = $groups[$digit-2];
   $letter .=$group;
   $digits .=$digit x length($group);  
}   # 这里的目的是形成一种2-9数字连续,a-z字母连续的状态, 循环结束后,digits该是222333...999   而letters该是AAABBB...ZZZ  这样做的目的是使它们二者对应,之后可以使用tr///进行数字与字母之间的替换操作。
open (my $fh, "<","wordlist.txt") or die; my $hh;
foreach (<$fh>)
{
    local $_=$_;
    $hh = $_;
   
   eval  "tr/$letter\L$letter\E/$digits$digits/";
   #  因为我们需要对大小写不敏感,故\L$letter\E匹配了小写字母。
    chomp($_);
    if( $_ eq $number)
    {
    print "$_\n";
    print "the word should be :$hh\n";
    exit;
   }
   
}
        # 专家的做法主要是在最后一个foreach部分与我不同,他的做法是:   while (<$fh>) {
    local $_ = $_;
    eval "tr/$letters\L$letters\E/$digits$digits/";
    last if /^$number$/o;
}
print uc if defined;
    
相关阅读 更多 +
排行榜 更多 +
宝宝情商养成宝宝巴士

宝宝情商养成宝宝巴士

休闲益智 下载
燥热手机版

燥热手机版

飞行射击 下载
巨人狙击手安卓版

巨人狙击手安卓版

飞行射击 下载