, 등을 선언 my
하기 위해 반복해서 사용하지 마십시오 . 배열을 한 번 선언하고 ( ) 사용하십시오.$rocks[0]
$rocks[1]
@rocks
수정 된 코드는 다음과 같습니다.
use strict;
use warnings;
my @rocks; ## declare the array here
($rocks[0], $rocks[1]) = qw/Hello World/;
$rocks[2] = 'Tom';
$rocks[3] = 'Cat';
-------------------push
연산자 사용 :
my @rocks;
push @rocks, qw/ Hello World /;
push @rocks, "Tom";
push @rocks, "Cat";
명시적이고 중복 된 배열 인덱스를 피하면 코드의 미래 보장에 도움이됩니다. 예를 들어 초기화를 변경해야하는 경우 거기에없는 배열 인덱스를 망칠 수 없습니다.
-------------------을 참조 할 때 선언 my @rocks
하고 my
더 이상 사용 하지 않아야 한다고 생각합니다 $rocks[xxx]
.
거기에 몇 개의 요소가 있을지 모르는 경우를 사용 push
하여 (처음에는 0 크기) 배열에 새 요소를 추가 할 수 있습니다 .
@rocks
여러 번 재 선언 하고 있습니다. 대신 다음과 같이 시도하십시오.
my @rocks;
$rocks[0] = 'Tom';
$rocks[1] = 'Cat';
기타
-------------------먼저 맨 위에 배열을 다음과 같이 선언 할 수 있습니다.
my @rocks;
그리고 다른 모든 곳에서 내 선언을 제거하십시오.
코드는 다음과 같습니다.
#!C:\Perl\bin\perl.exe
# ActivePerl 5.8 based
use strict; # enabled
use warnings;
my @rocks;
($rocks[0], $rocks[1]) = qw/Hello World/; # Syntax error near '$rocks['
$rocks[2] = 'Tom'; # Syntax error near '$rocks['
$rocks[3] = 'Cat'; # Syntax error near '$rocks['
print $rocks[0];
print $rocks[1];
print $rocks[2];
print $rocks[3];
-------------------그냥 똑바로 넣지 @rocks
그래?
use strict;
use warnings;
my @rocks = qw'Hello World';
my $rocks[2] = 'Tom';
my $rocks[3] = 'Cat';
print $rocks[0];
print $rocks[1];
print $rocks[2];
print $rocks[3];
출처
https://stackoverflow.com/questions/2006173