본문 바로가기
Programming/Perl

Perl 배열 / 연산자

by NAMP 2009. 4. 7.

배열 / 입력과 출력 / 연산자 - 2009/04/07

배열 @

여러개의 값들을 순서에 따라 저장하는 데이터 구조. 

@array              # 선언

$array[0]           # 접근

  1. @a = (1,2,3,4);   # 리스트를 이용하여 배열 이용. 

 

배열에 관련된 함수

배열 = sort 배열          ### 지정한 배열의 값을 오름차순으로 정렬하여 다른 배열에 저장. 

배열 = reverse 배열      ### 지정한 배열의 값을 반대로 정렬해서 저장

변수 = pop 배열             ### 지정한 배열의 마지막 요소를 추출해서 그 값을 변수에 저장

push 배열, 변수              ### 배열의 마지막 요소에 변수의 값을 추가로 저장

변수 = shift 배열                ### 배열의 첫 요소를 변수에 저장하고 요소는 앞으로 하나씩 이동

unshift 배열, 변수                ### 배열의 맨 앞에 요소를 추가, 그 외 요소는 하나씩 뒤로 밀려남

배열 = grep /정규표현/, 배열  ### 배열에서 장규표현에 매치하는 요소를 추출하여 배열에 저장. 


 

  1. @a = (40,30,20,10);       print '@a = '."@a\n";
  2. @a = sort @a;             print '@a = '."@a\n";
  3. @a = reverse @a;          print '@a = '."@a\n";
  4. $last_num = pop @a;       print "$last_num | @a \n";
  5. push @a, 50;              print '@a = '."@a \n";
  6. $first_num = shift @a;    print "$first_num | @a \n";
  7. unshift @a, 5;            print '@a = '."@a \n";
  8. @a = grep /^5/, @a ;             # 5로 시작하는 것. 
  9. print '@a = '. "@a \n";

 

배열의 사용
  1. $a[-1]       # 배열의 가장 뒤의 값 출력 
  2. @array[0,1] = (10,20);  
  3. $value = @array ;  # 배열의 요소 갯수 구하기 

 

$#a ;   # 배열 첨자의 최대값 구하기 
  1. @arr = (1..10);
  2. print "@arr\n";
  3. ($arr[10],$arr[11])=(11,12);   #사이즈 확장 
  4. print "@arr\n";
  5. print "\nSize of Array :" .@arr;       #배열의 크기 출력 
  6. print "\n배열의 마지막 요소 :",$#arr;  #배열의 마지막 요소. 첨자. 

 

  1. @arr=(0,6,9);
  2. print "$arr[0] $arr[1] $arr[2]\n";         #   '$'표시를 이용해서 요소에 접근한다. 
  3. print "$arr[-1] $arr[-2] $arr[-3]\n";      # 역으로 출력. 
  4. @arr[3,4]=(100,200);
  5. print "@arr\n";
  6. print '$#arr = '."$#arr\n";
  7. print '$arr[$#arr] ='."$arr[$#arr]\n";    # 마지막 요소 출력. 

 

목록 (List)                     

여러 변수의 값을 묶어서 저장 할 수 있도록 만든 구조. 

 

@를 사용하여 배열의 전체의 길이를 저장
  1. @arr1= (7,"Seven",1.678);
  2. print "@arr1\n";
  3. @arr2 = (1..9);
  4. print "@arr2\n";
  5. @arr3 = (A..Z);
  6. print "@arr3\n";  
  7. $value = @arr3;    # @를 사용하여 배열의 전체 길이 저장. 
  8. print '$value = '."$value\n";

 

@arr3 = (AAA..ZZZ);

패턴을 이용하여 원하는 메모리 주소 찾기에 사용. 

 

입력과 출력

chop / chomp - 마지막 문자 없애기 
  1. print "Input your Name :";
  2. $name = <STDIN>;
  3. chomp $name;    #마지막에 위치한 \n 문자를 없앤다. 
  4. print "Hello $name";
  • chomp   #마지막에 위치한 \n 문자를 없앤다. 
  • chop      #마지막에 위치한 문자를 없앤다. 

 

두 수를 입력 받고 그 합을 출력. 
  1.  
  2. print "First  Num :"; $num1 = <STDIN>; chomp $num1; 
  3. print "Second Num :"; $num2 = <STDIN>; chomp $num2; 
  4. print "Result : $num1 + $num2 = ".($num1+$num2);

 

정수형 형변환.  # 0을 더하면 정수형으로 형변환된다. 
  1. print "First  Num :"; 
  2. $num1 = <STDIN>; 
  3. $num1+=0 ;# 0을 더하면 정수형으로 형변환된다. 
  4. print "Second Num :"; 
  5. $num2 = <STDIN>; 
  6. $num2+=0 ; 
  7. print "Result : $num1 + $num2 = ".($num1+$num2);

 

undef 

  • undef EXPR

     

  • undef

    Undefines the value of EXPR, which must be an lvalue. Use only on a scalar value, an array (using@ ), a hash (using % ), a subroutine (using & ), or a typeglob (using * ). (Saying undef$hash{$key} will probably not do what you expect on most predefined variables or DBM list values, so don't do that; see delete.) Always returns the undefined value. You can omit the EXPR, in which case nothing is undefined, but you still get an undefined value that you could, for instance, return from a subroutine, assign to a variable or pass as a parameter. Examples:

        undef $foo;
        undef $bar{'blurfl'};      # Compare to: delete $bar{'blurfl'};
        undef @ary;
        undef %hash;
        undef &mysub;
        undef *xyz;       # destroys $xyz, @xyz, %xyz, &xyz, etc.
        return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
        select undef, undef, undef, 0.25;
        ($a, $b, undef, $c) = &foo;       # Ignore third value returned
    

    Note that this is a unary operator, not a list operator.

 

논리 연산자

[연산자] 사용

[&& 또는 and] 두 논리식이 모두 참이어야 참

[|| 또는 or] 두 논리식 중 하나만 참이면 참

[! 또는 not] 논리식의 진위를 반대로 만듦

 

논리 연산자를 이용한 출력 코드

  1. $x=10;
  2. $y=20;
  3. print '$x = 10'.',$y = 20'."\n";
  4. $result = !((($x==$y)||($x>$y))||(($x!=$y)&&($x<$y)));
  5. print 'result = ';
  6. if($result){
  7. print "True";
  8. }else{
  9. print "False";
  10. }

 

문자 연산자

[연산자] 사용

eq / lt / gt / le / ge / ne / cmp

 

문자열 연산자를 이용한 출력

  1. $string1="Apple";
  2. $string2="Orange";
  3. print "\$string1 = ".$string1."\n"."\$string2 = ".$string2."\n";
  4. print '$string1 eq $string2 : '.($string1 eq $string2)."\n";
  5. print '$string1 lt $string2 : '.($string1 lt $string2)."\n";
  6. print '$string1 gt $string2 : '.($string1 gt $string2)."\n";
  7. print '$string1 le $string2 : '.($string1 le $string2)."\n";
  8. print '$string1 ge $string2 : '.($string1 ge $string2)."\n";
  9. print '$string1 lt $string2 : '.($string1 lt $string2)."\n";
  10. print '$string1 ne $string2 : '.($string1 ne $string2)."\n";
  11. print '$string1 cmp $string2 : '.($string1 cmp $string2)."\n";

 

산술 연산자

** 승    ex> 2**3 = 8 

 

산술연산자를 이용한 값 출력

  1. $num1=10;
  2. $num2=3;
  3. $result = $num1+$num2; print "$num1+$num2 = $result\n";
  4. $result = $num1-$num2; print "$num1-$num2 = $result\n";
  5. $result = $num1*$num2; print "$num1*$num2 = $result\n";
  6. $result = $num1/$num2; print "$num1/$num2 = $result\n";
  7. $result = $num1%$num2; print "$num1%$num2 = $result\n";
  8. $result = $num1**$num2;print "$num1**$num2= $result\n";

 

비교 연산자

[연산자]  사용

[==]  같다.  참일때는 1을 반환, 거짓일 때는 공백문자.    

[<=>] 비교. 왼쪽이크면 1을 반환, 오른쪽이 더 크면 -1을 반환, 같으면 0을 반환.

 

비교 연산자를 이용한 출력

  1. $num1=10;
  2. $num2=20;
  3. print '$num1=10'."\t".'$num2=20'."\n";
  4. print '$num1 == $num2 : '.($num1==$num2)."\n";
  5. print '$num1 > $num2 : '.($num1>$num2)."\n";
  6. print '$num1 < $num2 : '.($num1<$num2)."\n";
  7. print '$num1 >= $num2 : '.($num1>=$num2)."\n";
  8. print '$num1 <= $num2 : '.($num1<=$num2)."\n";
  9. print '$num1 != $num2 : '.($num1!=$num2)."\n";
  10. print '$num1 <=> $num2 : '.($num1<=>$num2)."\n";

이 글은 스프링노트에서 작성되었습니다.

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

do  (0) 2009.04.10
Perl 제어문  (0) 2009.04.09
Perl 연상배열  (0) 2009.04.08
pl - Strawberry Perl 설치하기  (2) 2009.04.06
ActivePerl 설치하기  (0) 2009.04.05

댓글