你如何格式化perl字符串?

时间:2015-04-26 21:23:17

标签: perl

我正处于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中所做的事情。所以我希望有人可以解释我需要采取的正确方向。

由于

1 个答案:

答案 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;
  • {{1}}