/ / Como posso adicionar uma função com base na versão do perl? - perl, versionamento

Como posso adicionar uma função com base na versão do perl? - perl, controle de versão

Lamento se isso tiver sido solicitado, mas achei difícil procurar.

Eu uso o Perl 5.12 localmente, mas algumas de nossas máquinas usam o Perl 5.8.8 e elas não serão atualizadas por enquanto.

Para auditoria, uso "say" na plataforma 5.12.

Eu escrevi uma função simples para implementar o say na 5.8.8, mas não quero usá-la na 5.12.

Existe uma maneira de usar apenas a minha função say na versão mais antiga do Perl e usar a versão "incorporada" do say na 5.12?

Respostas:

9 para resposta № 1

Você pode usar o $^V variável especial para determinar a versão do interpretador Perl:

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

8 para resposta № 2

Isso deve funcionar:

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