2차원 배열 / 연상배열 / 조합배열 - 2009/04/08
리스트를 이용하여 스왑(SWAP)
($a,$b)=($b,$a);
- $a=10;
- $b=20;
- ($a,$b)=($b,$a);
- print $a.$b;
해시의 해시
- %hash_list=(
- language=>{p=>"perl",c=>"c",r=>"ruby"},
- teacher=>{l=>"lvuno",z=>"zesrever",m=>"monsterpk"},
- education=>{one=>401,two=>405,three=>206},
- );
- print "$hash_list{language}->{p}\n";
- print "$hash_list{teacher}{z}\n";
- print "$hash_list{education}->{one}\n";
- print "$hash_list{language}\n";
2차원 배열
- 펄은 단순히 1차원 배열만 제공
- 2차원 배열을 구현하기 위해서는 레퍼런스를 이용해야 한다.
- @a = (
- [10,20],
- [30,40],
- );
- @a = ([1,2,3,4],
- [5,6,7,8],
- [9,1,2,3],);
- foreach $x (0..2) {
- foreach $y (0..3) {
- print "$a[$x][$y]";
- }
- print "\n";
- }
- print "$a[2][1]\n";
- print "$a[1]->[1]\n";
- print "$a[0]->[0]\n";
- $b=[1,2,3,4];
- $c=1;
- print \$c."\n";
- print \$b."\n";
- print \@a."\n";
무명배열 / 무명해시
$a = [200,300,400,500]
$a [무명배열의 주소 값을 갖는다.]
$$a[0] 는 200의 값을 갖는다.
- $a = [200,300,400,500];
- $b = {"one"=>1,"two"=>2,"three"=>3};
- print "$a, $$a[0], $$a[1]\n";
- print "$b, $$b{one}, $$b{three}\n";
-
$a = [200,300,400,500]; # 위와 같은 코드 #
$b = {"one"=>1,"two"=>2,"three"=>3};
print "$a, $a->[0], $a->[1]\n";
print "$b, $b->{one}, $b->{three}\n";
Typeglob 란?
perl에서는 변수나 배열, 연상배열 등 같은 이름을 붙일 수 있다.
같은 이름의 변수나 배열 등을 하나로 묶어서 다루는 것.
*a = ($a,@a,%a)
- $a = 100;
- @a = (200,300);
- %a = ("num1"=>400,"num2"=>500);
- print "$a\n";
- print "@a\n";
- print "$a{num1}\n";
- print "="x20 ."\n";
- *all=*a;
- print"$a\n";
- print"$a[1]\n";
- print"$a{num2}\n";
조합 배열 (Hash) - '%' 문자와 배열의 이름으로 구성
키와 값을 한 세트로 설정.
- %조합배열명 = ( key1, data1, key2, data2, key3, data3); # ; 꼭 있어야 함.
- %조합배열명 = ( key1=>data1, key2=>data2, key3=>data3);
Reference 란?
메모리의 한 지점의 주소값을 가지는 변수
<하드 링크>
\$a = 변수 $a의 주소값
\@b = 배열 @b의 주소값
$$a = 변수 $a가 들어있는 주소값을 참조한다.
- $a = 100; #스칼라변수
- @b=(200,300); #배열
- %c=("num1"=>400,"num2"=>500);
- print"$a\n";
- print"@b\n";
- print"$c{'num1'}\n";
- $refera=\$a; # 래퍼런스 화.
- $referb=\@b;
- $referc=\%c;
- print"$refera,$referb,$referc\n";
- print"$$refera,$$referb[0],$$referc{'num2'}\n"; # 디 래퍼런스 화.
심볼릭 레퍼런스/ 소프트 레퍼런스
- $sym=10;
- $resym="sym";
- print $$resym;
조합배열
접근할때는 스칼라 값으로 접근한다.
$Hash{"Name"}
- %Hash = (
- "Name" => "Lee",
- "Age" => 23,
- "Job" => "Research Engineer",
- );
조합배열을 이용한 출력 코드
- %hash=(
- "Name"=>"Lee",
- "Age"=>23,
- "Job"=>"Research Engineer",
- );
- print "Name : $hash{'Name'}\n"; #스칼라값으로 접근한다.
- print "Age : $hash{'Age'}\n";
- print "Job : $hash{'Job'}\n";
연상배열에 관한 함수
[함수명] 설명
배열 = keys 연상배열 # 연상배열의 모든 키를 구해서 배열에 저장
배열 = value 연상배열 # 연상배열의 모든 값을 구해 배열에 저장
(값, 값) = each 연상배열 # 배열의 마지막 요소에 변수의 값을 추가로 저장
변수 = exists 배열{키} # 연상배열의 키가 존재하는 경우 변수에 1을 저장, 존재하지 않는 경우에는 undef를 저장.
@b = keys %a; # 연상배열의 모든 키를 구해서, 배열에 저장한다.
- @b = value %a; # 연상배열의 모든 값을 구해서 배열에 저장한다.
- while (($k, $v) = each %a) {
- ...
- } # 연상배열로부터 키와 값을 한 쌍씩 가져온다.
- $key = "name"
- $b = exists $a{$key};
연상배열에 키가 존재하는 경우는 1, 존재하지 않는 경우는 undef를 변수 $b에 저장.
이 글은 스프링노트에서 작성되었습니다.
'Programming > Perl' 카테고리의 다른 글
do (0) | 2009.04.10 |
---|---|
Perl 제어문 (0) | 2009.04.09 |
Perl 배열 / 연산자 (0) | 2009.04.07 |
pl - Strawberry Perl 설치하기 (2) | 2009.04.06 |
ActivePerl 설치하기 (0) | 2009.04.05 |
댓글