近来对Perl有点兴趣,就写了个小程序,刚好有软工作业,于是分别用白黑盒测试了下,效果还是不错的!!!以后写网页表单验证可以用到。
说明下,身份证分一代证15位与二代证18位,其中前六位地区码,(这个没有验证)18位多的就是年份是四位,15位的年份两位,前两位默认为“19”,18位的最后一位为校验码,具体算法请看程序,其中前17位每一位都有权值,算出总和后模11算出对应的校验码即可。
更多说明请Google之。。。
其中带#标记的是用来标记白盒测试路径点,不知道是否合理,但是,一个正则表达式就搞定很多情况啊!!!
其中输入为,相信是看得懂的^_^
./cardValidate.pl -c [your id card number] -s [your sex]
#!/usr/bin/perl
use strict;
use Getopt::Long;
sub validate_birth{
my ($year,$month,$day) = @_;
if($year lt 1900 or $year gt 2011){#9 10
die "Bitrhday error year!\n";
}
if($month eq "0