2011-03-22 4 views
7

이 질문을 받았다면 미안하지만 검색하기가 어려웠습니다.perl의 버전에 따라 함수를 어떻게 추가 할 수 있습니까?

필자는 Perl 5.12를 로컬로 사용하지만 일부 컴퓨터에서는 Perl 5.8.8을 사용하며 당분간 업데이트되지 않습니다.

감사를 위해 플랫폼 5.12에서 '말'을 사용합니다.

5.8.8에서 say를 구현하는 간단한 함수를 작성했지만 5.12에서는 사용하고 싶지 않습니다.

이전 버전의 Perl에서는 내 say 함수 만 사용하고 5.12에서는 'builtin'버전을 사용하는 방법이 있습니까?

+0

해결책은'[Perl6이다 :: Say' ] (http : // p3rl-org/Perl6 :: Say). – daxim

답변

9

당신은 $^Vspecial variable가 펄 인터프리터의 버전을 확인하는 데 사용할 수 있습니다

BEGIN { 
    if ($^V ge v5.10.1) { # "say" first appeared in 5.10 
     require feature; 
     feature->import('say'); 
    } 
    else { 
     *say = sub { print @_, "\n" } 
    }  
} 
+0

이 스크립트를 실행하려고하면 다음 오류가 발생합니다.''Name "main :: say"한 번만 사용 : C : \ src \ map.pl 줄에 오타가있을 수 있습니다. 14. " – chollida

+0

@chollida 경고입니다. , 오류가 아닙니다. 한번 '아무런 경고도하지 말것'; ' –

+0

성공, 감사합니다. – chollida

8

이 작동합니다 :이 문제에 대한 특정

BEGIN{ 
    no warnings 'once'; 
    unless(eval{ 
    require feature; 
    feature->import('say'); 
    1 
    }){ 
    *say = sub{ 
     print @_, "\n"; 
    } 
    } 
} 
관련 문제