2012-09-11 2 views
1

Perl의 함수를 사용하여 목록 출력의 일부만 캡처하려고합니다.func의 출력에서 ​​목록의 일부를 무시합니다. Perl 호출

나는이 라인들이 혼자서 뭔가를 할 것이라고 생각했지만, 그렇지 않았다.

예. 목록의 마지막 요소 캡처 :

(, $my_var) = split(/_/,$sample_string); 

예 : 목록의 두 번째 요소 캡처 :

(, $my_var, , ,) = split(/_/,$sample_string); 

Perl에서 가능합니까? 반환 배열의

답변

2

두 번째 요소 :

my $second_element = (split(/_/,$sample_string))[1]; 
3

또 다른 해결책은 : undef에 원하지 않는 요소를 지정 : 만 두를 찾을 필요가있을 때

(undef, $my_var) = split(/_/,$sample_string); 
2

왜 모두 밑줄을 찾을?

my $last_element = (split(/_/, $sample_string))[-1]; 
my $second_element = (split(/_/, $sample_string))[1]; 
my @some   = (split(/_/, $sample_string))[2,3]; 

을하지만 요청한 무엇에 가장 가까운 자리입니다 : 더 일반적으로

my ($last_element) = $sample_string =~ /([^_]*)\z/; 
my ($second_element) = $sample_string =~ /_([^_]*)_/; 

, 목록 슬라이스 할 것

my (undef, $second_element) = split(/_/, $sample_string); 
관련 문제