Perl Study #2

Scalar

 

Perl의 수 표현     ① 모든 수(int, double, long, float….)는 double로 저장. 변환 없음

② 1.25, 7.25e45, -12E-24, -2004, 3456, 0377(octal), -0xff(hexadecimal)

③ 예외로 정수 모드(integer mode) 존재

 

문자열   ① ASCII code의 0~255까지 모든 값을 담을 수 있음

② single quoted : 뒤에 특수기호(‘, 등) 외에는 모두 문자로 인식. 은 실제 enter

③ double quoted : 는 C와 동일하게 사용

 

연산자    ① 산술연산자 : +, -, *, /, %, **     논리연산자 : <, <=, ==, >=, > != 그외 C와 동일

② 문자열 연산자 : 두 문자열 연결(“sam” . “see”->”samsee”), 반복(“fred” x 3)

논리 : eq, ne(!=), lt(<), gt(>), le(<=), ge(>=)

③ 연산자로 타입 결정((3+2) x 4 -> “5555” 4 x (3+2) -> “44444”)

④ 문자열 -> 숫자 : “123.45fred” + 0 -> 123 (-w 옵션으로 경고 켜두기)

⑤ 연산자에 따라 필요한 타입(문자열, 숫자)로 자동으로 변경.

 

Scalar Variables

① 하나의 스칼라 값(숫자, 문자열, 레퍼런스)을 저장. 변수 이름은 $로 시작

② 변수의 할당, 연산은 C와 동일, 실수에 대해서도 ++, — 사용가능

 

chop, chomp, 스칼라를 문자열로 삽입(interpolation)

① chop : 문자열 변수에서 마지막 문자 삭제 chop($문자열 변수)

② chomp : 문자열 변수에서 new-line 제거 chomp($문자열 변수)

③ $a = “fred”; $b = “some text $a”; -> $b = “some text fred”
$b = “no such variable $what”; -> $b = “no such variable”
$x = ‘$fred”; $y = “hey $x”; -> $y = “hey $fred”

④ 변수 이름 구분 짓기 {} 사용. $fred = “pay”; $fredday = “wrong!”;
$barney = “It’s ${fred}day”; -> $barney = “It’s payday” 혹은
$barney = “It’s “ . $fred . “day”;

⑤ 대소문자 전환 문자열 이스케입(u, U, l, L)

 

입력받기, 출력하기

① 입력받기 : 리터럴이 필요한 곳에 <STDIN> $a = <STDIN>;
chomp($a = <STDIN>);

② 출력하기 : print (…);, print …; …의 평가는 문자열 삽입과 동일

 

배열과 리스트 데이터

 

리스트 리터럴

①      괄호로 묶고, 쉼표로 구분 (1, 2, 3), (1, 2, 3 … 8), (1, 2, 3, $a) 타입구분 X

②      문자열의 경우 qw 사용 qw(fred barney betty wilma);

③      리스트 리터럴은 배열 변수에 할당됨

 

배열

① @변수명, $변수명 과는 전혀 무관함 / 크기없이 선언

@words = qw(fred barney betty wilma); print @words; -> fredbarney…

② 할당은 단일 스칼라 변수와 유사
@fred = qw(one two); @barney = (4, 5, @fred, 6, 7); @barney = (8, @barney);
@barney = (@barney, “last”); -> @barney = (8, 4, 5, “one”, “two”, 6, 7, “last”);
($a,$b,$c) = (1,2,3); ($a,$b) = ($b,$a); ($d,@fred) = ($a,$b,$c); ($e,@fred) = @fred;
-> @fred = ($c), $e = $b

③ $a = @fred; -> 배열의 크기 저장, @fred = (@barney = (2,3,4));

④      접근 : $배열변수명[expression] <- 배열의 한 요소는 스칼라 변수이므로 $을 사용

⑤      슬라이스 : 배열 요소의 특별한 부분을 접근(subset), @으로 접근
@fred[0,1,2] = @fred[1,1,1]; @fred[1,2] = (9, 10);

⑥      초기화 되지 않은 부분이나 배열의 범위를 벗어나는 index로의 접근은 undef를 반환

⑦            마지막 인덱스값 얻기 : $#배열변수, 마지막 원소 얻기 : $배열변수[-1] OR $배열변수[$#fred]

 

배열 조작 함수

①      push, pop : 배열을 스택으로 취급 LIFO연산
push(@배열변수, 추가할 값, , , );, $리터럴변수 = pop(@배열변수);

②      shift, unshift : 배열의 첫 부분에 대해 추가 / 추출
unshift(@배열변수, 추가할 값, , ,);, $리터럴변수 = shift(@배열변수);

③      reverse : 주어진 배열의 역을 반환 @배열변수 = reverse(@배열변수);

④      sort : ASCII 코드상의 오름차순으로 정렬(모두 문자로 취급)하여 반환
@배열변수 = sort(@배열변수); (1, 2, 3, 16) -> (1, 16, 2, 3)

⑤      chomp(@배열변수) -> 모든 인자의 new-line 제거

 

입력받기, 삽입

① @배열변수 = <STDIN>; -> new-line으로 구분되는 리스트 생성. CTRL-D로 끝 알림

② @fred, $fred -> $fred[i], ${fred}[i] / print나 배정에서의 @ 사용은 배열의 모든

인자를 출력하게 됨. 슬라이스에 대해서도 동작

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다