Perl Study #3

제어구조 

statement block

블록 내의 마지막 문(statement)의 ; 은 삭제 가능.

 

if/unless

①      평가식은 문자열로 변환됨. 길이가 0 이거나 ‘0’인 경우 거짓. 그 외에는 참

②      unless : if (!expr)과 동일. 참이 아닌 경우 실행할 때. else 가능

③      두 개 이상의 평가가 필요하다면 elsif (expr)

 

반복문

①      while / until C와 동일, until은 평가식이 거짓일 때 실행 while/until (expr)

②      do while / do until 가능

③      괄호는 생략 가능

④      for C와 동일 for (init; expr; re-init)

⑤      foreach $i (@list) { statements; } list에서 하나씩 $i에 할당하고 반복문 수행
foreach $i (reverse/sort @list)도 가능
foreach (@list) 스칼라 변수 생략 가능. Default $_로 할당, 참조함
스칼라 변수는 참조형으로 변경시 list에 영향을 미침

 

해시

①      첨자(index)가 아닌 키 값(스칼라)으로 참조되는 배열. 값의 타입은 제한 없음.
키 값은 문자열로 취급

②      %로 선언. 참조는 $해시이름{키값}.
%hash = (jan, “January”, feb, “febrary” … ); $hash{“feb”} = “february”;
$hash{123.45} = 234.56; 참조시에도 $hash{123.45}

③      @hash = %hash -> (“jan”, “January”, “feb” … );
%hash1 = @hash -> %hash1 == %hash

④      reverse %해시이름 -> 키와 값이 교환된 해시 생성

⑤      키의 중복은 허용하지 않음.

 

해시 함수

①      keys(%해시이름) 모든 키 리스트를 반환
foreach $key (keys (%fred)) { print “at $key we have $fred{$key} ”; }
””안으로의 전체 해시 삽입은 안됨

②      values(%해시이름)은 key(%해시이름)에 의해 리턴되는 키와 동일한 순서로 모든 값을 리턴
@배열이름 = values(%해시이름);

③      each(%해시이름) 키-값 쌍을 리턴 ($key, $val) = each(%해시이름)

④      delete $해시이름{키};

 

해시 슬라이스

①      @으로 접근
@score{“fred”, “barney”, “dino”} = (205, 195, 30);
@players = qw(fred barney dino); print “scores are : @score{@players} ”;

②      해시 합치기 : 들어가는 해시(score)가 우선.
%league{keys %score} = values %score;
%league = (%league, %score); 와 동일

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다