컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Sunday, June 03, 2007

Perl Reference, 펄 레퍼런스, C언어의 포인터(Pointer)에 해당


펄에도 C의 포인터에 해당하는 것이 있는데, 레퍼런스(Reference)라고 합니다. C의 포인터가 어렵고 헷갈리듯이, 펄의 레퍼런스도 상당히 복잡합니다.

백슬래쉬(Backslash)문자인 \ 를, 배열이나 변수명 앞에 붙이면, 그 배열 또는 변수의 레퍼런스가 반환됩니다. 즉 주소를 구할 수 있습니다.

다음 예제는, "배열의 레퍼런스를 구하고", "레퍼런스로 배열의 각 요소에 접근하고", "함수 인수로 레퍼런스를 넘기고", "함수 내에서 레퍼런스를 처리"하는 방법입니다.

Perl 레퍼런스 기초 예제


소스 파일명: ref.pl
#!/usr/bin/perl
use strict; use warnings;

  my @a = qw( 자장면 탕수육 물만두 팔보채 );

  my $r = \@a; # 배열 @a의 현재 메모리 주소 대입
  print $r, "\n";
  # 출력: ARRAY(0x1625d24)
  # 시스템 상황에 따라 다른 주소가 출력됨


  # 레퍼런스로 배열 전체에 접근 (Dereferencing)
  print join("/", @{$r}), "\n"; # 출력: 자장면/탕수육/물만두/팔보채
  # 또는
  print join(">>", @$r), "\n"; # 출력: 자장면>>탕수육>>물만두>>팔보채


  # 레퍼런스로 각 배열 요소에 접근하기
  print ${$r}[0], "\n"; # 원본 배열의 0번째 요소에 접근하여 출력
  # 자장면

  # 또는
  print $$r[0], "\n"; # 원본 배열의 0번째 요소에 접근하여 출력
  # 자장면


##############################################################


  # 위에서 정의한 배열 레퍼런스를
  # 함수 인수로 넘기기 (Parameter Passing)
  print_array(@{$r});
  print "\n"; # 편의상 줄바꿈
  # 출력 결과: [자장면] [탕수육] [물만두] [팔보채]

  # 또는
  print_array2(\@a);
  print "\n"; # 편의상 줄바꿈
  # 출력 결과: <자장면> <탕수육> <물만두> <팔보채>



sub print_array {
  print "[$_] " foreach (@_);
}

sub print_array2 {
  my $temp = shift;
  print "<$_> " foreach (@{$temp});
}



0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top