NOWS/Perl

day 5.

emzei 2016. 2. 1. 14:27

블로그 스킨이 새로 떴길래 바꿨어요. 깔끔해서 좋네요.



  • 배열, 리스트 데이터 (이어서..)
  • 배열 함수




배열 요소 엑세스(접근)

  

  • 숫자 인덱스로 배열의 요소를 액세스하는 Substring 함수 이용 가능
  • 숫자 인덱스 대신 리터럴 정수도 사용 가능 (ex. $x=1 을 1 대신 사용하는 것)
    • 예)
      @alice = (1,2,3);  
      $b = $alice[0]; 
      $alice[0] = 9; # @alice = (9,2,3);
  • 요소 간 교환 가능
    • 예)
      @alice = (9,8);
      ($alice[0],$alice[1]) = ($alice[1], $alice[0]); # @alice=(8,9);
  • 배열 슬라이스
    • 예)
      @alice = (qw(apple banana choco))[0,1];
      # <=same as=> @x = qw(apple banana choco); @alice = ("apple", "banana");
    • 주의사항
      • 예)
        @alice = (10,9,8);
        @bob = (0,1,2);
        @charlie = @alice[@bob];
        -->  same as @alice[0,1,2] or ($alice[0], $alice[1], $alice[2]);
  • 배열의 끝을 넘어서 엑세스하는 경우, (경고 없이) undef 리턴
  • 배열의 끝을 넘어서 값을 할당하는 경우, 자동으로 배열 확장
  • 배열의 마지막 요소의 인덱스 값을 얻으려면 $# 사용
    • 예)@alice=(1,2,3);  # 이때 $#alice 값은 2를 반환함. 
  • 첨자가 음수(negative integer)인 경우, 배열의 끝에서 거꾸로 계산 
    • 예)@alice=(1,2,3); # $alice[-1] 값은 3



Push / Pop 함수

  

  • 행렬의 마지막 요소 위치(rightmost)에서 연산 발생
  • Push(행렬변수, 새로운 값)
    • 행렬의 맨 마지막에 요소 추가
    • push(@list, $new_val)@list = (@list, $new_val)와 동일
  • Pop(행렬변수)
    • 행렬의 마지막 요소 삭제
  • Cf. 리터럴 리스트 상에는 의미 없음



Shift / Unshift 함수

  

  • 행렬의 첫번째 요소 위치(leftmost)에서 연산 발생
  • Shift(행렬변수)
    • 행렬의 맨 처음 요소 제거
  • Unshift(행렬변수, 새로운 값)
    • 행렬의 맨 처음 요소에 새로운 값 추가
  • Cf. 공백 배열 변수에 주어지면 undef 리턴




Reverse 함수

  

  • 인수로 주어진 요소의 순서를 역으로 한 결과 리스트를 반환함
  • 예) reverse(7,8,9) --> (9,8,7) 리턴



Sort 함수

  

  • 인수를 받아서, ASCII 상에서 오름차 순으로 나열된 단일 문자열들인 것처럼 보이도록 정렬함
  • 인수로 받은 원래 리스트를 변화시키지 않고, 정렬된 리스트를 리턴함
  • 숫자에 대한 정렬은 산술적이지 않고, 해당 숫자에 대한 문자열 값으로 행해짐
    • 예) @x=(3,11,200); @y=sort(@x); # @x=(3,11,200), @y=(11,200,3);
    • (1,10,11,100,....,2,20,21,22,...3........ 이런 순서로!)




Chomp 함수

  

  • 스칼라 변수 뿐만 아니라 배열에서도 적용가능
  • 배열 상의 요소에 존재하는 뉴라인을 한꺼번에 제거할 수 있음.
  • 예)
    @list=("my\n","world\n","hello");
    chomp(@list); # 결과 @list = ("my", "world", "hello");



배열로서의 <STDIN>

  

  • 리스트 구문에서 파일의 마지막까지의 남은 모든 행을 리턴
  • 예) @list = <STDIN>;
  • 3개의 행을 입력 후, Ctrl+D (EOF 표시) 를 누르면, 배열은 3개의 요소로 끝남




'NOWS > Perl' 카테고리의 다른 글

day 7.  (0) 2016.02.04
day 6.  (0) 2016.02.02
day 4.  (0) 2016.01.27
day 3.  (0) 2016.01.07
day 2.  (0) 2016.01.06