【发布时间】:2017-03-17 07:15:42
【问题描述】:
我有这个循环来检查数组中的重复元素。问题是一旦数组有八进制数,编译器就会抛出错误。我该如何做这个工作?
my @array1 = (010895401, 010895401, 010895402, 010895403);
my %seen;
foreach my $octal (@array1)
{
next unless $seen{$octal}++;
print "'$octal' is duplicated.\n"
}
【问题讨论】:
-
带有 8 和 9 的八进制数没有多大意义。你想表达什么意思?
-
问题是你在数组中找不到重复的数字,因为那些不是数字。
-
如果数组是数字数组,那么
010(八进制)是8(十进制)的副本。而且它是0010的副本,因为额外的前导零无关紧要。并且可能也是8.0和0.8e+1的副本。如果你想要字符串比较,按照工具说的做 -
那个教程已经过时了。你不应该使用它。你可以知道,因为它在示例中没有
use strict。 -
为了将来参考,您的问题不应该说“编译器抛出错误”。相反,它应该给出准确的错误信息。