Recent Posts
Recent Comments
04-20 00:00
관리 메뉴

동글동글 라이프

perl Array & C language Array 본문

개발자 이야기/Perl

perl Array & C language Array

동글동글라이프 2008. 11. 3. 16:45


perl을 처음 배우는 분들에게 간단한 개념을 설명하기 위해

예전에 잠시 정리했던 문서를 블로그에 옮긴다.

이 문서는 perl의 배열의 특징 설명을 위해 C언어의 배열과 비교, 분석을 하였다.

혹시나 perl
장점 위주로 설명한다고 해서 perl 언어로써 우위를 점한다는 극단적인

 

흑백논리에는 빠지지 않기 바란다.

 

 

 

배열의 선언 크기 지정

 

 

C언어에서는 배열을 선언할때는 변수의 뒤에다 [ ] (괄호) 붙여 변수의 크기를 지정한다.

 



int Array[10] ; //
정수형 배열 10 생성



 

처음 선언을 배열의 크기를 지정해 줘야 하며 한번 정한 크기는 변경을 없다.

 

그러므로 배열을 처음 선언을 적당한 크기를 지정해 주어야 하며

 

배열보다 많은 크기의 데이터를 입력했을 경우에  운영체제가

 

예외 처리를 하여 경고창을 띄운다.

 

그러면... perl 배열에 대해서 한번 살펴보자.

 

일단 배열의 이름 앞에 @문자를 붙여 선언을 한다.

 


 

@Array # 배열 생성



 

perl 배열은 일반변수로 생성되며 데이터 기본형은 scalar형이기 때문에

 

정수,문자열,실수 등의 값들을 저장할 있다.

 

그런데 배열의 크기는 어떻게 정하는 것일까?

 

perl에서는 크기를 전혀 신경 쓰지 않아도 된다.

 

배열의 요소와 크기는 자동으로 설정해 정해 주며 ( 초기값을 넣으면 값만큼 배열 지정 )

 

프로그램을 실행하는 도중에도 배열의 크기를 늘이거나 줄일 있기 때문이다.




 

배열에 넣기

 

 

 

C언어에서는 배열에 값을 넣기 위해서는 두가지 방법이 있다.

 

처음 배열을 선언할

 

int Array[10] = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 };

 

그리고 배열의 요소에 값을 직접적으로 넣는 방법

 

Array[0] = 100;

 

 

 

Perl 경우도 마찬가지로 2가지 방법이 있다.

 

첫번째로 선언과 동시에 값을 넣는 방법이 있다.

 

밑의 예제를 보자.




Code:

1
2
3
4
5
use strict;
my @array1 = ( 1, 2, 3, 4, 5, 6, 7, 8, 9);
my @array2 = ( 1..9);
print " @array1 \n";
print " @array2 \n";

Output: 
 
1
2
 1 2 3 4 5 6 7 8 9 
 1 2 3 4 5 6 7 8 9 



배열
2개를 생성을 각각의 요소에 list 구조를 이용하여 값을 넣었다.

 

처음 배열은 정수를 1에서 9까지 차례대로 넣어서 출력하였고

 

번째 배열은 ..(목록구성연산자) 사용하여 1에서 9까지 값을 넣었다.

 

배열은 같은 값을 가지고 있다는 이야기 이다.

 

".." 연산자를 적절히 사용하면 효율적인 프로그래밍이 가능하다.



Code:

1
2
3
4
5
6
7
8
9
10
use strict;
my @array1 = (1..10);
my @array2 = ('A'..'Z');
my @array3 = ("AB".."BA");
my @array4 = ("가".."하");

print " @array1 \n";
print " @array2 \n";
print " @array3 \n";
print " @array4 ";

Output:  

1
2
3
4
 1 2 3 4 5 6 7 8 9 10 
 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
 AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA 
 가 



 

흥미로운 사실은 문자열도 증가가 된다는 것이다.

 

AB BA 까지의 문자열도 출력이 되는데 AZ까지 출력 BA라는 값으로 증가한다.

 

아쉽지만 한글은 이런 좋은 기술이 적용되지 않는다.




 

C언어에서의 배열은 같은 데이터형만 담을 있는 제한된 기능에 반해

 

Perl에서는 여러 형을 동시에 넣을 있다.



Code:

1
2
3
use strict;
my @Array = (100,"백입니다", 19.536 ,"십구점오삼육");
print " @Array \n";

Output:

1
 100 백입니다 19.536 십구점오삼육 


 

이것은 배열이 아니라 구조체라고 해도 전혀 손색이 없을 정도로 다양한 데이터형의 값들이 저장된다.




 

배열의 요소 접근

 

 

C언어 에서는 배열의 요소를 [ ] 연산자를 사용해 접근한다.

 

첨자는 0부터 시작하기에 첫번째 배열의 요소에 100 이란 값을 넣는다고 할 때

 

Array[0] = 100;

 

Array배열의 첫번째 값에 100이란 값을 대입을 하였다. 

 

Perl에서의 개별적으로 배열의 값을 접근하는 문법은 C언어와 거의 흡사하다.

 

하지만 여러가지 기술이 추가 되는데 일반적인 방법부터 먼저 살펴보자.



Code:

1
2
3
4
use strict;
my @Array = (1,3,9);
print "$Array[0]  $Array[1]  $Array[2]  $Array[3] \n";
print "$Array[-1] $Array[-2] $Array[-3] $Array[-4] \n";


Output:

1
2
1 3 9   
9 3 1  


 

배열명 앞에 @문자가 아닌 변수를 표현할 때의 $ 문자를 적어준 뒤에 배열의 값들을 적는다.

 

정수로의 접근 뿐만 아니라 음수로도 배열의 요소에 접근을 있는데

 

음수로 접근할 경우에는 마지막에 있는 배열의 요소부터 접근을 한다.




Code:

1
2
3
use strict;
my @Array = qw(문자열을 편하게 입력한다);
print " @Array";
 
Output:

1
 문자열을 편하게 입력한다

문자열을 저장할 때 " " 쓰지 않고 qw 를 사용하여 배열에 대입할 있다.

배열의 요소에 값을 넣을 상상이상으로 여러 문법도 허용이 된다.



Code:

1
2
3
4
5
6
7
8
9
10
use strict;
my @Array;
my @String;
my @Number = (2,0,1,3);
@Array[0,1] = ( "Lee","K");
print "$Array[0] $Array[1] \n";
@String = qw(너 밥 먹었니 ?);
@Array = @String[@Number];
print "@String\n";
print "@Array\n";


Output:

1
2
3
Lee K 
너 밥 먹었니 ?
먹었니 너 밥 ?

 

처음 예제는 배열의 요소에 개별적으로 값을 넣는 방법이고

 

두번째 예제는 개별요소에 배열을 대입하여 다시 값을 배열으로 저장하는 방법이다.

 

이것만 보아도 Perl이란 언어가 얼마나 유연한지 있는 단편의 예가 되겠다.

 

 

Perl 경우에는 처음 이야기를 했듯이

 

배열의 값을 명시해줄 필요가 없음으로 어디까지 배열이 생성이 되어있는지 알지 못할 때가 있다.

 

이럴때는 $#배열명을 적어주면 배열의 마지막 첨자값을 있는데

 

배열의 첨자는 0부터 시작하는 것을 잊지말고 첨자값을 계산하기 바란다.



Code:

1
2
3
4
5
6
7
8
use strict;
my @Array;
my $Number;

@Array = qw(배열의 첨자를 살펴봅시다);
$Number = @Array;
print "Array 배열은 총".$Number."개의 배열요소로 구성되어 있다. \n";
print '마지막 요소의 문자열은 "'.$Array[$#Array].'" 이다';



Output:

1
2
Array 배열은 총3개의 배열요소로 구성되어 있다. 
마지막 요소의 문자열은 "살펴봅시다" 이다

 

그와 더불어 배열을 변수에 대입하면 배열요소의 갯수가 들어간다는 사실도 확인을 있다.


 



'개발자 이야기 > Perl' 카테고리의 다른 글

음악을 들어보자 #5  (5) 2008.11.13
CPAN Author 등록하기  (0) 2008.11.13
More fun with strings(substr,split,join)  (2) 2008.11.03
Chapter 5. Moving On  (0) 2008.10.31
지식IN(naver)에서 질문 검색 후 자동 출력  (6) 2008.10.27
Comments