할 수 있는지 확인 Perl 로 작성된 코드에 5.10+에서 실행됩니다 5.8?

StackOverflow https://stackoverflow.com/questions/3301082

  •  26-09-2020
  •  | 
  •  

문제

의 일부를 새로운 기능의 펄 5.10 및 5.12 와 같이"라고"정의로 기능할 수 있는 사용하거나 허용하지 않를 사용하여 명시적으로"기능"합니다.하지만 다른 추가,같은 이름을 캡처 그룹의 정규표현식,암시적입니다.

내가 쓸 때 펄를 사용하여 5.10+통역사,그러나 그것을 실행에 5.8,만들 수 있습니 Perl 을 사용하는 방법에 대해 불평하는 아무것도 아니에 5.8?분명히 그것은 좋은 연습을 테스트하는 코드는 모든 주요 버전에 당신은 그것을 의도하에서 실행되지만,그것은 여전히 좋을 Perl 고 자동으로 합니다.

도움이 되었습니까?

해결책

하고 싶을 때도록 프로그램에서 실행됩의 특정 버전 perl,I 테스트에서는 버전의 perl.의 기능을 나 릴리스 애플리케이션 테스트 프로그램으로 여러 perls 하기 전에 실제로 업로드되어 있습니다.

이 필요가 있는 적절한 테스트와 쓰기에 충분 테스트합니다.그것은 유지하기 쉬운 몇 가지 별도의 펄 설치를 동시에,너무,내가 쇼에 효과적인 Perl 프로그램.

테스트::MinimumVersion 거의 같은 소리도 작업,그러나 그것은 여러 가지 제한 사항이 있습니다.그것만 보이기에 파일 당신이 그것을 줄(지 않도록 그 아무것도 확인할 짐),그리고 나는 생각하지 않는 실제로 모 내부 regex 패턴이 있습니다.이러한 각각의 보고서는 최소한 버전이 5.004 하지 않는 진정한 그들 중 어떤:

#!perl

use Perl::MinimumVersion;

my $p_flag = <<'SOURCE';
'123' =~ m/[123]/p; # 5.10 feature
SOURCE

my $named_capture = <<'SOURCE';
'123' =~ m/(?<num>[123])/; # 5.10 feature
SOURCE

my $r_line_ending = <<'SOURCE';
'123' =~ m/[123]\R/p; # 5.12 feature
SOURCE

my $say = <<'SOURCE';
say 'Hello';
SOURCE

my $smart_match = <<'SOURCE';
$boolean = '123' ~~ @array;
SOURCE

my $given = <<'SOURCE';
given( $foo ) {
    when( /123/ ) { say 'Hello' }
    };

SOURCE

foreach my $source ( $p_flag, $named_capture, $r_line_ending, $say, $smart_match, $given ) {
    print "----Source---\n$source\n-----";
    my $version = Perl::MinimumVersion->new( \$source  )->minimum_version;
    print "Min version is $version\n";
    }

의 일부는 이유 Perl::MinimumVersion 작품이기 때문에 그에 대한 힌트는 원본을 제공 그것은 이미 등 use 5.010, 고 use feature 니다.그러나 그는 유일한 방법을 사용 기능이다.그리고,당신은 참고,그것을 놓치는 것처럼 /p 국기 전까지는,사람을 추가 확인하십시오.그러나,당신은 항상을 쫓는 것으로 PPI 솔루션입니다.

그것은 쉽게 컴파일하려면,실행하는 테스트를 찾을 수 있습니다.

다른 팁

코드를 실행할 때 Perl 점검을 할 수 있다고 생각하지 않지만 perl :: minimumVersion test :: minimumversion .(후자는 단지 테스트 :: Builder 이전 주변의 래퍼

다른 답변을 읽는 것에서 답변은 아니지만 앱 :: PerlBrew 테스트를 위해 여러 버전의 Perl을 설치하고 관리하는 데 도움이 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top