Wednesday, February 14, 2007
Perl/펄 문제 해결] Possible attempt to separate words with commas
use warnings; 프라그마를 사용하여, 경고를 출력하게 했을 때,
Possible attempt to separate words with commas at D:\Z\example.pl line 5
라는 경고가 나오는 경우가 있습니다. "콤마로써 단어(요소)들을 서로 구분하려 했을 수 있다"는 뜻입니다.
이것은 qw() 로 배열을 초기화할 때, 그 배열 요소들 사이에 쉼표(콤마)를 넣어주었다는 경고입니다.
qw() 로 배열을 정의할 때는 쉼표가 아닌 공백(스페이스)문자로만 요소들을 구분합니다.
따라서 쉼표를 제거하면 경고가 없어집니다.
아래 예제의 배열 @x 의 선언에 문제가 있습니다. 요소를 구분하느라 넣어준 쉼표가, 요소의 일부분으로서 출력됩니다.
만약 정말로 쉼표가 들어간 요소를 배열에 넣으려면 qw() 가 아닌, 아래 예제의 @o2 배열 선언처럼 정식으로 배열을 만들어야 합니다. qw() 는 공백이나 특수문자는 잘 처리하지 못하기 때문입니다.
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
실행 결과 화면:
1번째 출력 결과는, 정상
2번째 출력 결과는, 약간의 오류
3번째 출력 결과는, 정말로 쉼표가 포함된 요소를 정상적으로 출력한 것
▶▶ [Perl/펄 강좌] 배열(Array) 정의에서, qw 란?
Possible attempt to separate words with commas at D:\Z\example.pl line 5
라는 경고가 나오는 경우가 있습니다. "콤마로써 단어(요소)들을 서로 구분하려 했을 수 있다"는 뜻입니다.
이것은 qw() 로 배열을 초기화할 때, 그 배열 요소들 사이에 쉼표(콤마)를 넣어주었다는 경고입니다.
qw() 로 배열을 정의할 때는 쉼표가 아닌 공백(스페이스)문자로만 요소들을 구분합니다.
따라서 쉼표를 제거하면 경고가 없어집니다.
아래 예제의 배열 @x 의 선언에 문제가 있습니다. 요소를 구분하느라 넣어준 쉼표가, 요소의 일부분으로서 출력됩니다.
만약 정말로 쉼표가 들어간 요소를 배열에 넣으려면 qw() 가 아닌, 아래 예제의 @o2 배열 선언처럼 정식으로 배열을 만들어야 합니다. qw() 는 공백이나 특수문자는 잘 처리하지 못하기 때문입니다.
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#!/usr/bin/perl
use warnings;
my @o = qw( 자장면 탕수육 짬뽕 우동 물만두 );
my @x = qw( 자장면, 탕수육, 짬뽕, 우동, 물만두 );
my @o2 = ( "자장면,", "탕수육,", "짬뽕,", "우동,", "물만두," );
# 배열 @o 의 내용 출력 코드
for (my $i = 0; $i <= $#o; $i++) {
print "\$o[$i] = $o[$i]\n";
}
print "\n\n\n"; # 줄바꿈
# 배열 @x 의 내용 출력 코드
for (my $i = 0; $i <= $#x; $i++) {
print "\$x[$i] = $x[$i]\n";
}
print "\n\n\n"; # 줄바꿈
# 배열 @o2 의 내용 출력 코드
for (my $i = 0; $i <= $#o2; $i++) {
print "\$o2[$i] = $o2[$i]\n";
}
use warnings;
my @o = qw( 자장면 탕수육 짬뽕 우동 물만두 );
my @x = qw( 자장면, 탕수육, 짬뽕, 우동, 물만두 );
my @o2 = ( "자장면,", "탕수육,", "짬뽕,", "우동,", "물만두," );
# 배열 @o 의 내용 출력 코드
for (my $i = 0; $i <= $#o; $i++) {
print "\$o[$i] = $o[$i]\n";
}
print "\n\n\n"; # 줄바꿈
# 배열 @x 의 내용 출력 코드
for (my $i = 0; $i <= $#x; $i++) {
print "\$x[$i] = $x[$i]\n";
}
print "\n\n\n"; # 줄바꿈
# 배열 @o2 의 내용 출력 코드
for (my $i = 0; $i <= $#o2; $i++) {
print "\$o2[$i] = $o2[$i]\n";
}
실행 결과 화면:
1번째 출력 결과는, 정상
2번째 출력 결과는, 약간의 오류
3번째 출력 결과는, 정말로 쉼표가 포함된 요소를 정상적으로 출력한 것
D:\Z>example.pl
Possible attempt to separate words with commas at D:\Z\example.pl line 6.
$o[0] = 자장면
$o[1] = 탕수육
$o[2] = 짬뽕
$o[3] = 우동
$o[4] = 물만두
$x[0] = 자장면,
$x[1] = 탕수육,
$x[2] = 짬뽕,
$x[3] = 우동,
$x[4] = 물만두
$o2[0] = 자장면,
$o2[1] = 탕수육,
$o2[2] = 짬뽕,
$o2[3] = 우동,
$o2[4] = 물만두,
D:\Z>
Possible attempt to separate words with commas at D:\Z\example.pl line 6.
$o[0] = 자장면
$o[1] = 탕수육
$o[2] = 짬뽕
$o[3] = 우동
$o[4] = 물만두
$x[0] = 자장면,
$x[1] = 탕수육,
$x[2] = 짬뽕,
$x[3] = 우동,
$x[4] = 물만두
$o2[0] = 자장면,
$o2[1] = 탕수육,
$o2[2] = 짬뽕,
$o2[3] = 우동,
$o2[4] = 물만두,
D:\Z>
▶▶ [Perl/펄 강좌] 배열(Array) 정의에서, qw 란?
tag: perl
Perl | 펄
<< Home