DEV/Perl
Reference
초록매실원액
2015. 12. 4. 09:15
메모리의 한 지점 주소값을 가지는 변수
변수의 주소 확인
- 변수의 이름 앞에 '\'문자를 붙여 기술
- \$a : 변수 $a의 주소값
- \@b : 배열 @b의 주소값
Reference가 가르키는 변수 참조
- 변수의 이름 앞에 '$'문자를 붙여 기술
- $$a = 변수 $a의 들어있는 주소값을 참조한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 학생의 성적을 입력 받아 출력 하는 %stu; $st = \%stu; print "name :"; chomp($st->{name}=<>); print "kor :"; chomp($st->{kor}=<>); print "eng :"; chomp($st->{eng}=<>); print "math :"; chomp($st->{math}=<>); $sum = $st->{kor} + $st->{eng} + $st->{math}; $avg = $sum/3.0; print "--- result ----\n"; print "name : "."$st->{name}\n"; print "kor : "."$st->{kor}\n"; print "eng : "."$st->{eng}\n"; print "math : "."$st->{math}\n"; print "sum : "."$sum\n"; print "avg : "."$avg\n"; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | ------------------------------------------------------------------------- $a = 10; $b = /$a; print ${$b}; {}를 통해 참조하고 있는 변수의 값을 가져올수있다 = 디레퍼넌스 ------------------------------------------------------------------------- @a = (10,20); $b = \@a; print $b->[0]; 배열에 접근할떄 이렇게 축약가능 ------------------------------------------------------------------------- %hash = ( 1 => "one", 2 => "투", 3 => "삼", ); $a = \%hash; print $a ->{1}; ------------------------------------------------------------------------- | cs |
split
1 2 3 4 5 6 7 8 9 10 11 12 13 | $a = "apple"; @arr = split '',$a; ==tokenzier | cs |
Reverse
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | chomp($a = <>); #$a = "Reverse"; @arr = split '',$a; $tmp ; for($j=0; $j<= $#arr ;$j++){ $tmp = $arr[$0]; for($i=0; $i<= $#arr ;$i++){ print $arr[$i]; $arr[$i] = $arr[$i+1]; } $arr[-1] = $tmp; print "\n"; } |
#Perl
Style
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | for($i=0;$i<=$#arr;$i++){ //마지막 요소를 맨앞으로 # print "@arr\n" ; # $tmp = pop @arr; # unshift @arr , $tmp; //맨 앞요소를 맨뒤로 # print "@arr\n" ; # $tmp= shift @arr; # push @arr , $tmp; } | cs |
foreach
1 2 3 4 5 6 7 8 9 | foreach 리스트or배열 <-- 요소의 개수만큼 반복 ex) foreach $x(0..2) <----- 3번 반복, $x에는 0..2의 값이 들어감 foreach $x(0..2) 변수를 안적었을때 $_ 가 추가됨 | cs |
Typeglob
- Perl에서는 변수나 배열, 연상배열 등 같은 이름을 붙일 수 있다.
- 같은 이름의 변수나 배열 등을 하나로 묶어서 다루는 것
- 이름 앞에 *을 붙이면 typeglob이 된다.
무명배열
- [ ]안에 요소를 나열해 적은 것
- 이름이 없는 배열을 뜻하며 이름 대신 레퍼런스를 사용한다
$A무명배열의 주소---> |
200 |
300 |
400 |
500 |
$$A[0] |
$$A[1] |
$$A[2] |
$$A[3] |
무명해시
- { } 안에 키와 값을 나열 한 것
- 이름이 없는 연상배열을 뜻하며 값을 참조하기 위해 레퍼런스를 사용
$B 무명해시의 주소 ----> |
1 |
2 |
3 |
$$B{"one"} |
$$B{"two"} |
$$B{"three"} |
2차원 배열
- 펄은 단순히 1차원 배열만 제공
- 2차원 배열을 구현하기 위해서는 레퍼런스를 이용
배열의 해시
- 리스트 해시값을 사용하여 해시를 만든다.
해시의 해시