2014-09-17 2 views
-1

왜 모든 숫자로 구성된 변수 이름을 선언 할 수 없습니까? 예 : my $123;?왜 모든 숫자로 구성된 변수 이름을 선언 할 수 없습니까?

$1은 정규식과 관련된 특수 변수라는 것을 알고 있습니다. 그러나 $a도 (sort 관련) 특별한 변수이고, 나는 이렇게 내 코드에서 선언 할 수 없습니다

my $1; 

또는

my $123; 
을 내가 그렇게 할 수있는 이유는

my $a; 

을하지만,

+0

최근 Perl에서 * 시도한 읽기 전용 값의 수정을 생성하는 n> 9 – sln

+0

@sln을 $ ('n')을 사용하십시오. – simbabque

+7

'$ a'와'$ b'는'sort'를 위해 예약되어 있지 않습니다. 분류에 사용되기 때문에 '엄격한'사용 '경고 아래 면제됩니다. 일반적으로 나쁜 스타일로 간주되지만 다른 곳에 사용할 수 있습니다. –

답변

6

이 내용은 perlvar이라는 perldoc에 설명되어 있습니다.

Perl의 변수 이름은 여러 가지 형식을 가질 수 있습니다. 대개 문자 또는 밑줄로 시작해야하며이 경우 임의로 길 수 있습니다 (최대 251 자까지 가능). 문자, 숫자, 밑줄 또는 특수 시퀀스 :: 또는 '가 포함될 수 있습니다. [...]

Perl 변수 이름은 일련의 숫자 또는 구두점 또는 제어 문자 일 수도 있습니다. 이 이름은 모두 Perl이 특수 용도로 사용하기 위해 예약되어 있습니다. 예를 들어, 모든 자릿수 이름은 정규 표현식 일치 후 역 참조에 의해 캡처 된 데이터를 보유하는 데 사용됩니다. [...]

계정으로이 촬영,이 이름은 유효 : 그러나

$a 
$foo 
$_ 
$_123 
$_foo_bar_baz_ 
$_____ 

, 그것은 의미를 갖는하게 의미하지 않는다.

변수에 포함 된 내용의 이름을 지정하는 것이 좋습니다. $99 변수에 포함될 수있는 변수를 추측하는 것은 매우 어렵습니다. 어쩌면 그것은 무언가의 99 번째이고,이 경우 배열 인덱스 여야합니다. 또는 99 일 수 있습니다.이 경우 상수 (99)를 사용할 수 있습니다.

+1

+1 일반적으로 그렇지만 특히 민감한 변수 이름과 배열 사용에 대한 참고 사항입니다. – tjd

+1

그러나 '@ 2'와 같은 배열과 '% 57132'와 같은 해시는 읽기 - 쓰기입니다. 그것들은 항상 전역 적이기 때문에 ('@ 4'와 심지어'local @ 4'도 사용할 수 있습니다 만,'my @ 4'라고하는 것은 오류입니다) 항상'main' 네임 스페이스에 있습니다. 다른 사람들이 말했듯이, 당신의 마음이 검은 색이 아니라면 어떤 코드에서라도 사용하지 마십시오. – mob

관련 문제