변수(Variables)

PERL의 변수는 크게 3 가지로 나누어집니다.
  1. scalar variable.
  2. array.
  3. associative array. (hash)
Perl언어는 변수이름의 앞에 특별한 기호를 붙여주므로써 변수형태를 구분합니다.
scalar 변수는 변수명 앞에 $를 붙이는 변수로 굳이 말하자면 일반 변수라 하는게 좋을 것 같습니다. scalar라는 것은 '실수(實數)로 표시할 수 있는 수량', 방향성이 없는 수량 같은 것인데 다른 언어에서처럼 정수형, 왕정수형, 실수형, 왕실수형 (헹님요....) 등과 같은 엄격한 구분 없이 모든 숫자가 실수형으로 저장이 되며, 심지어는 문자열도 저장이 되는, 조금은 헷갈릴지 몰라도, 매우 편리한 변수형태 입니다. 따라서
$price = 100000;
print "$price\n"; # <- '\n'이 new line이라고 말했었습니다.
$price = "Very expensive."; print "$price\n";
에서와 같이 숫자를 할당했던 변수에 문자열을 재 할당해도 전혀 문제가 안됩니다. 신나는군요. 약간 이상한 게 눈에 뜨입니까 ? 일단 넘어가세요.

또 Perl의 변수에는 문자열로 저장된 숫자형태의 변수, 즉 1000이 아닌 "1000"도 계산식에 그대로 적용시킬 수 있다는점이 아주 재미있습니다.

$price = "130"; # 모양은 숫자이지만 실제는 문자열입니다.
$double = $price * 2;
print "$double\n";
위의 소스를 실행시켜 보세요. 이게 에러가 없다니까요, 글쎄 !
이런 변수의 특성은 여러분의 프로그램이 사용자로부터 받은 자료를 계산식에 이용할 때 다른 언어에서처럼 숫자로 변환하는 함수 등을 사용하지 않고 즉시 계산에 사용할 수 있게하겠지요.

array는 배열입니다. 일종의 집합체, 구조체 같은 것입니다.
배열이란 복수의 일반변수들을 변수 각각의 이름이 아닌 참조번호를 이용하여 접근할 수 있도록 굴비 엮듯 줄줄이 엮어놓은 것입니다. 즉 "전종필"이라고 부르지 않고 "58번"하고 부르는것이겠지요.
배열의 머리에는 $가아닌 달팽이(@)를 붙입니다. 즉,

@myarray;
와 같습니다. 또 배열의 구성요소는 일반변수(scalar)이므로 개개 구성요소를 나타낼 때는
$myarray[0] = 0; # 0번 굴비에게는 파리 0마리,
$myarray[1] = 5; # 1번 굴비는 1마리의 파리를 드리겠어요오오.
$myarray[2] = "I do not want a number but a long long long string.";
$myarray[3] = 300; # 배 트자뿌겠네 !
print $myarray[2], "\n";
print "$myarray[2]\n";
과 같이 나타냅니다.

굴비가 몇 마리인지는 세어보면 알겠지만 배열의 크기를 알아야 할 때는 눈으로 셀 수가 없지요. 그 때는

$lastIndex = $#myarray;
처럼 배열의 이름 앞에 $#를 붙이면 배열 @myarray의 맨 마지막 요소의 참조번호(index number)를 알 수 있습니다. 즉 $lastIndex 또는 $#myarray의 값이 3 이라면 배열의 첫 참조번호는 0 이므로 요소의 갯수는 모두 4개인 셈입니다.

배열의 크기를 조절할 때에도 마지막 참조번호를 이용할 수 있습니다.

$#myarray = 2; # 마지막 참조번호를 2로 맞추라 ! ...
라고 하면 $myarray[3]은 사라지고 3개의 요소($myarray[0], $myarray[1], $myarray[2])만 남겨집니다. 조금은 희한한 방법이지만 편리하기도 하지요. 물론, 반대로 배열의 크기를 늘일 수도 있겠지요.

배열의 크기를 알아내는 방법에는 마지막 참조번호($#myarray)를 보는것외에 배열 이름을 그대로 사용하는 것이 있습니다.

@arr = ( 1, 2, 3, "Last member" );
$size = @arr; print "$size\n";
이 예문의 경우 출력되는 것은 오직 "4"라는 숫자입니다.

Associative array는 hash라고도 하는 잡동사니 주머니입니다. 배열과 비슷하지만 배열처럼 참조 번호가 아닌 참조 '열쇠'(key)로 값을 정하거나 찾을 수 있습니다. 즉,

@myarray = ( 1, 3, 5, 2, 6 );
$fourth = $myarray[3]; # 2

%myhash = ( "apple", 3, "pear", 10, "banana", 4, "monkey", 2 );
$howmany = $myhash{ "banana" } # returns 4
$howmany = $myhash{ "apple" } # returns 3
$myhash{ "pear" } = 9; # becomes ( ..., 3, "pear", 9, "bana... )
여기까지 대략 변수에 대하여 알아보았습니다. 누워서 떡 먹기죠 ? 이제는 하나씩 문제를 만들어가 봅시다
이전 | 목록 | 다음
Comments