我正处于perl速成课程中(我们的学期即将结束)。不幸的是,perl并不是一种更容易学习的语言,而且我遇到了一些麻烦。
我们的教学给了我们一个简单的任务,或者看起来如此。我们应该使用一个16位数的信用卡号码,并将其打印成4组4位数字。
所以例如1234-1234-1234-1234将是1234 1234 1234 1234.该程序应该忽略任何外来字符,只关注数字。
到目前为止,我已设法对此进行编码:
# Get input from user
print "\n\n";
print 'Please enter a string: ';
chomp($inp = <>);
print "\nYou entered: $inp";
我做了一些小的研究并注意到\ d用于数字,所以我想我会编码类似\ d \ d \ d \ d \ d \ d \ d \ d等,但是,正如我之前所说,我并不完全理解我在perl中所做的事情。所以我希望有人可以解释我需要采取的正确方向。
由于
答案 0 :(得分:1)
首先,删除非数字。 (顺便说一下,这会使$cc =~ s/[^0-9]//g;
多余。)
$cc =~ tr/0-9//cd;
die("Invalid credit card number\n") if length($cc) != 16;
然后验证。
$cc = join ' ', $cc =~ /[0-9]{4}/g;
然后,添加空格
$cc = join ' ', unpack 'A4', $cc;