mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, July 19, 2006

Perl/펄 프로그래밍 기초] 배열(Array) 만들어 초기화시키고 출력하기


C언어와 달리, 펄의 배열은 자동으로 초기화되고, 쓰레기값이 들어가지는 않습니다. 여기서 말하는 초기화는 값을 대입해 주는 것입니다.

#!/usr/bin/perl
use strict; use warnings;

my @foo = qw/ test test2 foo bar /;


  foreach (@foo) {
    print $_, "\n";
  }

코드 설명


my @foo : @foo 라는 배열 선언. 앞에 골뱅이(@)가 있으면 배열임
qw/ test test2 foo bar /; : @foo 라는 배열 안에, "test, test2, foo, bar" 라는 요소(element) 4개를 채워 넣기
foreach (@foo) {... : @foo 안의 요소를 한 개씩 화면에 출력

실행 결과:
D:\Z>0.pl
test
test2
foo
bar

D:\Z>

위의 펄 코드를 0.pl 이라는 이름으로 저장하고 실행하면 이런 화면이 나옵니다. ※ 윈도우에서 액티브펄(ActivePerl)로 실행시킨 것임.



이런 방법으로도 배열을 정의하고, 배열을 출력할 수 있습니다:
#!/usr/bin/perl
use strict; use warnings;

my @foo;


$foo[0] = "test";
$foo[1] = "t e s t 2";
$foo[2] = "foo";
$foo[3] = "bar";


print $foo[0], "\n";
print $foo[1], "\n";
print $foo[2], "\n";
print $foo[3], "\n";


이러면, "t e s t 2" 이렇게 공백이 들어간 요소도 정의할 수 있습니다.


배열의 첫번째 요소의 번호는 1이 아니라 0입니다.

배열의 요소에 직접 접근할 때에는 골뱅이(@)를 사용하면 안됩니다. 골뱅이는 "배열 전체"를 의미하는 기호이고, 배열의 요소 하나하나는 일반 변수와 같이 달러($)를 사용하고 뒤에 번호를 붙입니다. 배열이든 해쉬(Hash)든, 요소 하나를 나타낼 때는 무조건 $기호입니다.

그렇지만 위에서, $foo[0] 등은 $foo 와는 전혀 별개의 변수입니다. $foo[0] 는 @foo 라는 배열의 한 요소이고, $foo 는 그냥 일반 변수이며 배열 @foo 와는 아무 상관이 없습니다. 따라서 위의 소스에서 $foo 라는 변수를 지정해도 @foo 라는 배열의 요소들과 전혀 충돌하지 않습니다.

my @foo;
my $foo;

이런 같은 이름의 변수가 전혀 별개로 존재할 수 있습니다.


펄에는 포인터도 없고 해서, 배열에 대해 특별히 어려운 점은 없습니다. C언어에서는 메모리 관리도 해주어야 하는데, 펄은 자기가 알아서 자동으로 메모리를 관리합니다. 그리고 펄의 배열과 해쉬에는 고무줄처럼 쭉쭉 늘어나는 융통성이 있고, 이론상의 제한이 없습니다. 컴퓨터의 메모리가 남아 있는 한, 아무리 많은 요소들을 마구 집어넣어도 에러가 나지 않습니다.



이미 있는 배열의 내용을 완전히 비우려면 다음과 같이 합니다: ▶▶ [Perl/펄] 배열 내용 모두 지우고 초기화 / 해쉬(Hash) 초기화 - Array Initialize

펄 배열의 요소들을 알아보기 쉽게 출력하는 함수: ▶▶ [Perl] 배열(Array) 덤프; 디버그용


▶▶ Perl/펄] 변수 정의; 변수 선언, 초기화; Variable Initialize




tag: perl
Perl | 펄

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top