2011-03-10 2 views

답변

2

Windows에서 ActivePerl의 항상 (또는 적어도 펄 5.005 이후)에 Win32::BuildNumber() 함수를 정의합니다 : 모든 설정을 나열하려면 검사 할 경우

if (defined &Win32::BuildNumber) { 
    say "This is ActivePerl"; 
} 
else { 
    say "This is NOT ActivePerl"; 
} 

다른 플랫폼에서도 ActivePerl을 사용하려면 ActivePerl::BUILD() 함수를 사용해야합니다. ActivePerl 5.8.7 빌드 814에서만 소개되었으므로 이전의 실제 릴리스에서는 작동하지 않습니다.

+0

해키하지만 작동하고 비 해킹 솔루션이 아닌 것 같습니다 (- : – hippietrail

7

당신은 당신이 당신의 문제를 일으키는 어떤 차이가 발견되면 모두 perls이

perl -V 

컴파일 된 방법을 검사 할 수 있습니다, 당신은 Config 패키지를 사용하여 특정 기능을 감지 할 수 있습니다. 당신이 런타임에 확인할 수 있도록

perl -MConfig -MData::Dump -e "dd \%Config" 
+0

유일하게 유용한 차이점은 Strawberry Perl이 'uname'에 자체 이름을 넣었지만 ActivePerl에는 빈 'uname'이 있다는 것입니다. 이로 인해 다른 Windows Perl이 ActivePerl과 혼동 될 가능성이 있습니다. 완벽한 상황은 아니지만 아마도 우리 모두가 ... – hippietrail

+0

또한'Data :: Dump'는 Strawberry Perl에서 기본적으로 사용할 수있는 것 같지 않습니다. – hippietrail

1

ActiveState 버전 813.1은 기본적으로 ActivePerl 패키지를 제공하고 (모듈을로드 할 필요없이) Perl의 다른 버전은 그렇지 않습니다. 적어도 Strawberry Perl 5.20.1은 그렇지 않습니다. 당신은 당신의 스크립트의 ActiveState Perl을 통해 실행되고 있는지 여부를 알아낼 다음과 같은 코드를 사용할 수 있습니다

if (exists $::{'ActivePerl::'}) { 
    # getting called through ActiveState Perl 
} else { 
    # not getting called through ActiveState Perl 
} 

은 ActivePerl의 모듈에 대한 자세한 내용은 http://docs.activestate.com/activeperl/5.8/lib/ActivePerl.html를 참조하십시오.

관련 문제