본문 바로가기

Script/Perl

06. Array Function

qw
 
qw 단축표현을 사용하면 많은 따옴표 없이도 손쉽게 문자열 목록을 만들수 있다.
 
무조건 괄호가 아닌 {} , !!, [] 등 다른 기호를 사용할 수도 있다. 그냥 구분자 쌍만 동일하면 된다.
 
my @test = qw ( a b c d );
print @test ;
 
 
 
push, pop
 
push, pop 은 배열의 '끝' 부분을 조작한다.
 
pop 함수는 배열의 끝에서 원소를 하나 빼내고 이를 리턴한다.
 
my @array = 1..4 ;
my $popedItem = pop(@array);
print $popedItem ; # 4
print @array ; #123
 
push 함수는 배열의 끝에서 원소( 배열도 된다 ) 를 하나 추가한다.
 
my @array = 1..4 ;
push @array , 8;
print @array ;
print "\n"; #12348
 
@array = 1 ..4;
my @array2 = 5..9 ;
push @array , @ array2;
print @array ; #123456789
 
 
 
shift, unshift
 
shift, unshift 는 배열의 '시작' 부분을 조작한다.
 
사용 법은 push, pop 과 동일하다.
 
 
 
foreach
 
배열을 순회하기 위한 제어구조이다.
 
my @array = 1..4 ;
foreach my $item ( @array ) {
       print $item ."\n"; # 차례대로 1, 2, 3, 4 출력
}
 
my $item 을 생략할 수 있는데 펄의 기본변수인 $_ 를 사용할 수 있다.
 
foreach (1 ..10) {
       print $_ ."\n"; # 차례대로 1 ~ 10 출력
}
 
내장되어 있는 기본 글로벌 변수라고 생각 하면 된다.
 
즉 아래와 같은 것도 가능하다.
 
$_ = "aaa bbb ccc\n" ;
print; # aaa bbb ccc
 
 
 
reverse
 
배열을 뒤집은 결과를 리턴한다.
 
즉 원본은 유지된다.
 
my @fred = 6..9 ;
my @test = reverse @fred ;
print @test ; #9876
 
 
 
sort
 
정렬함수이다.
 
ASCII 문자열은 대문자가 소문자보다 앞에 오고
 
숫자는 대문자 보다 더 앞에 온다.
 
a 는 b 보다 앞에 온다.
 
즉  숫자 > 대문자 > 소문자 > 알파벳 순으로 정렬된다.
 
my @rocks = qw ( F f d a b );
my @sorted = sort(@rocks);
my @backSorted = reverse sort(@rocks);
print @backSorted ; #fdbaF
 
 
 
join
 
여러 문자열을 하나로 합친다.
 
my @elements = ( "Antimony", "Arsenic" , "Aluminum", "Selenium");
print join(", " , @ elements); # "Antimony, Arsenic, Aluminum, Selenium"
 
 
 
map
 
배열을 입력으로 받아 배열의 모든 원소 $_ 에 어떤 조작을 가하고
 
그 결과들로 새로운 배열을 생성한다.
 
아래와 같은 형식을 따르는데 foreach 와 동일하게 펄의 기본변수인 $_ 를 사용할 수 있다.
 
map { 변경루틴 $_ } @배열변수명
 
my @capitals = ( "Baton Rouge", "Indianapolis" , "Columbus" );
print join ", ", map { uc $_ } @capitals # "BATON ROUGE, INDIANAPOLIS, COLUMBUS"
 
 
 
grep
 
배열을 받아 필터링하여 결과 배열을 출력하는데 구문은 map 과 비슷하다.
 
결과가 참이면 그 원소 스칼라는 출력 배열로 들어가며 거짓이면 들어가지 않는다.
 
my @capitals = ( "Montgomery", "Helena" , "Denber", "Boise");
print join ", ", grep { length ( $ _ ) == 6 } @capitals ; # "Helena, Denver"
 
 
 
 

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

08. List Data  (0) 2020.01.21
07. Hash  (0) 2020.01.21
05.  Scalar Data  (0) 2020.01.21
04. Variable  (0) 2020.01.21
03. Hello World  (0) 2020.01.21