Files
perl-examples/Writerside/topics/Data-type.md
2024-06-21 14:57:07 +09:00

5.4 KiB

자료형

타입 기호
스칼라 $
배열 @
해시 %

스칼라 (Scalar)

스칼라는 숫자나 문자열 같은 단순한 변수형입니다. 스칼라 타입의 변수는 $로 시작합니다. 변수의 주소를 담는 참조의 경우에도 스칼라 타입입니다.

숫자

$num1 = -100;
$num2 = 108.32;
$num3 = 0xff;
$num4 = 3.14E7;
$num5 = 123_456_789; # 큰 숫자의 경우 3자리마다 '_'를 넣어서 읽기 쉽게 할 수 있습니다.

수학 함수

  • abs
  • atan2
  • cos
  • exp
  • hex
  • int
  • log
  • oct
  • rand
  • sin
  • sqrt
  • srand

문자열

문자열은 홑따옴표('') 또는 쌍따옴표("")로 묶습니다. 쌍 따옴표로 묶인 문자열의 경우에는 문자열 내에 포함된 변수를 보간 처리(interpolation)하지만, 홑 따옴표의 경우에는 처리하지 않습니다.

$name = 'charlie';
$age = 14;
$str1 = "\u$name is $age-year-old.\n";
$str2 = '\u$name is $age-year-old.\n';

print $str1; # Charlie is 14-year-old.
print $str2; # \u$name is $age-year-old.\n

q//는 홑 따옴표처럼, 그리고 qq//는 쌍 따옴표처럼 작동합니다. 문자열에 따옴표가 포함된 경우에 유용합니다. // 대신 ()등을 사용할 수있습니다.

$str = qq/"How are you?"/;

이스케잎 문자열 (Escape sequence)

이스케잎 문자
\\ 역슬래시
\', \" 따옴표
\n, \r, \t 줄바꿈과 탭
\xnn 16진수 형식의 숫자
\u 다음 문자를 대문자로 만듭니다.
\l 다음 문자를 소문자로 만듭니다.
\U, \L 이어지는 모든 문자를 대문자/소문자로 만듭니다.
\Q 이어지는 모든 문자 중 영문자/숫자가 아닌 문자를 역슬래시 처리합니다.
\E \U, \L, \Q를 끝냅니다.

히어독 (Here doc)

히어독은 문자열의 길이가 긴 경우에 유용하게 사용됩니다. 히어독은 <<식별자로 시작하고 식별자로 끝납니다.

$name = 'Charlie';
$age = 14;

$var = <<MYDOC;
$name is $age-year-old.
MYDOC

print $var;

$var = <<"MYDOC"; # 쌍따옴표로 묶은 것은 따옴표로 묶지 않은 것과 같습니다.
$name is $age-year-old.
MYDOC

print $var;

$var = <<'MYDOC'; # 이렇게하면 보간 처리가 되지 않습니다.
$name is $age-year-old.
MYDOC

print $var;

V-문자열

V-문자열은 v로 시작하며, 문자 코드를 .으로 구분하여 표기합니다.

$char = v9786;
print "$char\n"; # ☺

$str = v102.111.111;
print "$str\n"; # foo

특수 리터럴

다음 특수 리터럴은 $도 붙지 않으며, 문자열 보간에는 사용될 수 없습니다. 사실 변수가 아니라 함수입니다.

  • __FILE__

    현재 스크립트 파일 이름

  • __LINE__

    현재 줄 번호

  • __PACKAGE__

    현재 패키지 이름

print "Line: ".__LINE__."\n";

문자열 함수

  • length(STRING)

    문자열의 길이

  • lc(STRING), lcfirst(STRING)

    소문자로 변환

  • uc(STRING), ucfirst(STRING)

    대문자로 변환

  • index(STRING, SUBSTR)

    부분 문자열의 위치

  • rindex(STRING, SUBSTR)

    index()와 마찬가지로 부분 문자열의 위치를 반환합니다만, 문자열의 끝에서부터 탐색합니다.

  • substr(STRING, OFFSET)

    부분 문자열을 반환합니다.

  • substr(STRING, OFFSET, LENGTH)

  • substr(STRING, OFFSET, LENGTH, NEW_STR)

    부분 문자열이 반환되며, 원본 문자열 중 해당 부분이 새로운 문자열로 대체됩니다.

  • chr(NUMBER)

    아스키 코드 또는 유니코드를 문자로 변환합니다.

  • crypt(STRING, SALT)

    비밀번호 등의 단방향 암호화에 사용됩니다.

  • hex(STRING)

    16진수 문자를 변환합니다.

  • ord(STRING)

    문자열의 첫 번째 문자를 숫자로 변환합니다.

  • reverse(STRING)

    문자열을 뒤집습니다.

  • sprintf(FORMAT_STR, VAR)

    C 스타일의 형식화 문자열 함수입니다.

  • chop(STRING)

    문자열에서 마지막 문자를 제거합니다. 매개변수가 생략된 경우에는 $_에 대해서 실행됩니다. 매개변수가 리스트인 경우에는 모든 아이템에 대해서 실행됩니다.

  • chomp(STRING)

    chop()과 비슷하지만, 문자열에서 마지막 줄바꿈 문자를 제거합니다.

리스트

괄호 사이에 스칼라 값을 콤마로 구분하여 나열한 것을 리스트라고 부릅니다. 리스트를 배열 변수에 대입하면 배열이 되고, 해시 변수에 대입하면 해시가 됩니다.

배열 (Array)

배열은 0부터 시작되는 숫자 인덱스를 사용하는 순서화된 리스트입니다. 배열 타입의 변수는 @로 시작합니다. 배열의 아이템은 스칼라 타입이므로 배열의 아이템을 참조할 때에는 변수명 앞에 $를 사용하고, 배열의 인덱스는 []로 명시합니다.

@names = ('Charlie', 'Steve', 'Jane');

print "$names[0]\n";

해시 (Hash)

해시는 키/값 형식의 순서없는 자료형으로 연관 배열이라고도 불립니다. 해시 타입의 변수는 %로 시작합니다. 해시의 아이템을 참조할 때에는 변수명 앞에 $를 사용하며, 데이터의 키는 {}를 사용해서 명시합니다.

%persons = ('Charlie', 14, 'Steve', 37, 'Jane', 22);

print "Age is $persons{'Charlie'}\n";