2016-11-03 21 views
-2

配列内の重複する要素をチェックするこのループがあります。問題は、配列にコンパイラがエラーをスローする8進数を持つことです。どのように私はこの作品を作るのですか?配列要素の8進数の重複をチェックするPerl

my @array1 = (010895401, 010895401, 010895402, 010895403); 

my %seen; 

foreach my $octal (@array1) 
{ 
    next unless $seen{$octal}++; 
    print "'$octal' is duplicated.\n" 
} 
+7

8と9の8進数は意味がありません。あなたは彼らに何を意味するつもりなのですか? –

+0

この配列内の重複した数字を探したいだけです。私は 'https:// www.tutorialspoint.com/execute_perl_online.php'を使ってこのコードをコンパイルしています。このエラーが発生します 'main.pl 1行目の不正な8進数 '8'と '9'を返します。 – taji01

+2

行の末尾にある*は数字ではないため、配列内に重複する数字が見つかりません。 –

答えて

4

それは(0x又は0.で始まるもの以外の)0リテラル始動が数の進表現であることが期待される。Illegal octal digit '8' and '9' at main.pl line 1, at end of line

このエラーをスロー数字の8進数表記は排他的に0〜7の数字で構成されています(数値のバイナリ表記が排他的に0と1の数字からなる方法に似ています)。

このように、010895401は数値の8進表現であると予想されますが、そうではありません。 010895401は意味がありません。

関連する問題