Perl

[Perl] subroutine에 array를 파라메터로 넘기기.

용식 2013. 6. 25. 11:26

http://stackoverflow.com/questions/10729015/pass-array-and-scalar-to-subroutine-perl



perl에서 subroution을 작성하고, 파라메터를 넘길경우 일반적으로 아래와 같이 받는다.


my($a, $b, $c) = @_;


그런데 array를 파라메터로 넘기고 싶은 경우 ... 아래와 같이..


callsub(@array, 2,3);


단순히 이렇게 받으면 될줄 알았다.


my(@a,$b,$c) = @_;


그런데.. $b, $c가 제대로 넘어오지 않는다.. 찾아보니 파라메터 자체가 array로 인식이 되는것 같다.

그래서 아래와 같은 방법들을 사용하라고 되어있다.



use strict;
use warnings;
sub t {
my ($a, $b, @c) = @_;
print "$a, $b, @c \n";
}
my @n = (1,2,3,4,5);
print "@n \n";
&t(2,3, @n);
sub t2 {
my($a, $b, $c) = @_;
print "@$a, $b, $c \n";
}
&t2(\@n,2,3);
view raw test.perl hosted with ❤ by GitHub
첫번째는 배열 파라메터를 제일 뒤로...
두번째는 배열의 레퍼런스를 넘기고 그걸 받아서 다시 배열화 시키는 방법.