今天早上我参加了一次代码审查,发现了一段错误的代码,但是我不知道为什么。
$line =~ /^[1-C]/;
这行代码本应该评估一个十六进制字符,介于1
和C
之间,但我认为这行代码并没有做到。问题不在于它匹配了什么,而是它匹配了什么?我能打印出字符类中的所有字符吗?就像下面这样:
say join(', ', [1-C]);
很遗憾,
# Examples:
say join(', ', 1..9);
say join(', ', 'A'..'C');
say join(', ', 1..'C');
# Output
Argument "C" isn't numeric in range (or flop) at X:\developers\PERL\Test.pl line 33.
1, 2, 3, 4, 5, 6, 7, 8, 9
A, B, C
/[0-9A-C]/
。 - bpj