자바스크립트를 허용해주세요.
[ 자바스크립트 활성화 방법 ]
from Mohon Aktifkan Javascript!
 

[Perl] 9장 함수와 서브루틴 - 매개변수 전달 및 반환값

728x90

✅ 1. 매개변수 전달(parameter passing)

Perl에서 매개변수 전달(parameter passing)반환값(return value) 처리 방식의 핵심은 서브루틴(subroutine)이 인자를 어떠한 방식으로 전달 받는지, 어떤 방식으로 결과를 돌려주는지 이해하는 것이 중요합니다. Perl 에서는 기본적으로 서브루틴에 전달되는 인자를 배열(@_)에 저장해 인자를 접근할 수 있습니다.

sub add {
    my ($x, $y) = @_;   # @_에서 두 개의 값을 꺼냄
    return $x + $y;
}

my $result = add(10, 20);
print "result: $result\n";  # 결과: 30
  • 인자는 값이 아닌 리스트 형태로 전달
  • 사실상 참조(reference)가 넘어오기 때문에, 원본 값이 바뀔 수 있음
sub modify {
    $_[0] = $_[0] * 2; # 첫번째 인자를 두배로 변경
}

my $num = 10;
modify($num);
print $num; # 20 (첫번째 인자를 두배로 변경)

 


2. 반환값

Perl의 return스칼라(단일 값), 리스트, 해시 등 무엇이든 반환이 가능하며, 반환하지 않고 그냥 마지막 계산식의 값이 리턴되는 경우도 많습니다.

  • 스칼라 반환
sub square {
    my ($x) = @_;
    return $x * $x;
}

print square(10); # 16
  • 리스트 반환
sub minmax {
    my ($x, $y) = @_;
    return ($x < $y ? $x : $y, $x > $y ? $x : $y);
}

my ($min, $max) = minmax(10, 20);
print "min: $min, max: $max\n"; # min: 10, max: 20
  • 해시 반환
sub get_person {
   return (name => "Robert", age => 30);
}

my %person = get_person();
print "name: $person{name}, age: $person{age}\n"; # name: Robert, 30

✅ 3. 참조를 통한 전달과 반환

Perl 에서는 배열이나 해시를 통해 반환/전달 시 참조(reference)를 사용합니다. 리스트 전체를 반환할 시 큰 데이터일 경우 용량이 크기에 비효율적일 수 있기 떄문입니다.

sub make_ref {
    my @arr = (1,2,3,4,5);
    return \@arr;  # 배열 참조 반환
}

my $ref = make_ref();  # 배열 참조 반환
print join(", ", @{$ref}); # 1, 2, 3, 4, 5

 

 

GitHub - Koras02/Perl-Bloging: https://thinky.tistory.com/category/Back-End/Perl

https://thinky.tistory.com/category/Back-End/Perl. Contribute to Koras02/Perl-Bloging development by creating an account on GitHub.

github.com

 

728x90
LIST