레이블이 scalar인 게시물을 표시합니다. 모든 게시물 표시
레이블이 scalar인 게시물을 표시합니다. 모든 게시물 표시

2013년 9월 8일 일요일

Perl 제대로 배우기 - 2장 (Scalar Data)

2 Scalar Data


모든 숫자는 내부적으로 동일한 포맷을 사용 :: 배정밀도 부동소수점수


지원 숫자 형식
  • 1.25
  • 7.25e4
  • -6.5e4
  • 12
  • 15
  • -2004
  • 0377 (8진수)
  • -0xff (16진수)


문자열
  • 단일 인용부호 ‘ ‘ : \n (뉴라인)은 인식되지 않는다.
    • ‘hello’  : hello (5개의 문자)
    • ‘don\’t’ : d, o, n , ‘ , t
    • ‘hello
      there’ : hello 뉴라인 there (11문자로 인식)
    • ‘’ : 널 문자열
    • ‘silly\\me’ : silly 백슬래쉬 me
    • ‘hello\n’ : hello 뒤에 백슬래쉬 , 그 뒤에 n (뉴라인으로 보지 않는다.)


  • 이중 인용부호 “ “
  • - 역 인용 부호 ` ` : 외부 명령어 실행



표기
의미
\n
뉴라인
\r
리턴
\t
\f
폼피드
\b
백스페이스
\a
\e
이스케이프
\007
임의의 8진 아스키 값
\x7f
임의의 16진 아스키 값
\cC
임의의 제어문자(여기서 Ctrl+C)
\\
백슬래쉬
\”
이중 인용부호
\l
뒤에 오는 문자는 소문자
\L
\E 전까지 뒤의 모든 문자는 소문자
\u
뒤에 오는 문자는 대문자
\U
\E 전까지 뒤의 모든 문자는 대문자
\Q
\E 전까지 모든 알파뉴메릭이 아닌 것을 이중인용부호로 둘러 쌈
\E
\L,\U,\Q의 종료


숫자를 위한 연산자
  • 2 + 3 #2더하기 3, 혹은 5
  • 5.1 - 2.4 #빼기
  • 3 * 12 # 3 곱하기 12
  • 14 / 2 # 14 나누기 2
  • 10 / 3    # 부동 소수점 나누기
  • 2 ** 3     # 2 ^3 , 2에 3승
  • 10 % 3 # 나머지 1]


문자열을 위한 연산자 ( . ) :: 반드시 명시적으로 호출 해야 함.
  • “hello” . “world” #”helloworld”와 동일]
  • $str .= “ ”; 와 $str = $str . “ “;
문자열 반복 연산자 ( x )
  • “fred” x 3 # “fredfredfred”
  • (3+2) x 4 # “5555”와 동일




숫자와 문자열 비교 연산자
비교
숫자
문자열
동일
==
eq
같지 않음
!=
ne
보다 작음
<
lt
보다 큼
>
gt
보다 적거나 같음
<=
le
보다 크거나 같음
>=
ge


연산자의 결합성과 우선순위 : 높은 것에서 낮은 것으로 (작업중)
결합성
연산자
왼쪽
리스트 연산자 (왼쪽 방향)
왼쪽
-> (메소드 호출 , 디레퍼런스)
비결합
++ , -- (자동증가, 자동감소)
오른쪽
*** (누승)
오른쪽
! , ~ , \ , + , -
논리부정,비트부정,레퍼런스 연산자 , 일원 플러스, 일원 마이너스
왼쪽
=~ , !~ (일치 ,비일치)
왼쪽
*,/,%,x (곱셈,나눗셈,나머지,문자열복사)
비결합
이름붙은 일원 연산자(예:chomp)
왼쪽
&(비트 AND)
왼쪽
|,^(비트 OR, 비트 XOR)
왼쪽
&& (논리 AND)
왼쪽
|| (논리 OR)
비결합
.. , … (비포함(noninclusive),포함 범위)
오른쪽
?:(if-then-else)
오른쪽
=,+=,-=,*=(할당과 이원 할당)
왼쪽
,=> (쉼표와 쉼표-화살표)
비결합
리스트연산자(오른쪽 방향)
오른쪽
not (논리 NOT)
왼쪽
and (논리 AND)
왼쪽
or , xor (논리 OR, 논리 XOR)


chop 함수 : 문자열의 마지막 문자를 제거
chomp 함수 : 마지막 한개의 뉴라인 문자만 제거


대소문자 변환 이스케이프 문자열 사용예제 (추후)


스칼라 값으로서 <STDIN>
$a = <STDIN>;
chomp ($a);
==========================
chomp ($a = <STDIN>);

정의되지 않은 값 (undef) :: 숫자로 사용되면 0 , 문자열로 사용되면 길이가 0인 문자열 이다.