[SP-pm] variável $^H no Perl 5.16

Stanislaw Pusep creaktive at gmail.com
Thu May 31 07:09:26 PDT 2012


Bom dia, senhores.
A referência oficial ao $^H, no perlvar:
"WARNING: This variable is strictly for internal use only. Its
availability, behavior, and contents are subject to change without notice."
Mais claro, impossível.
Ainda assim, estou tentando entender o que mudou de lá pra cá:

$ perl -e 'BEGIN { $^H{feature_say} = 1; }; say $^V'
v5.14.2

 $ perl -e 'BEGIN { $^H{feature_say} = 1; }; say $^V'
Can't locate object method "say" via package "version" at -e line 1.

Aparentemente, não funciona mais... Mas não é bem assim.
Fuçando um pouco, descobri que precisa do tal de HINT_FEATURE_MASK,
introduzido em 5.15.7 (
https://metacpan.org/diff/file/?target=BINGOS/perl-5.15.7/lib/feature.pm&source=FLORA/perl-5.14.2/lib/feature.pm
)

perldelta refere à definição do valor de HINT_FEATURE_MASK em perl.h:
#define HINT_FEATURE_MASK       0x1c000000 /* 3 bits for feature bundles */

Então, para "consertar" o código, basta fazer:

$ perl -e 'BEGIN { $^H |= 0x1c000000; $^H{feature_say} = 1; }; say $^V'
v5.16.0

Infelizmente, para mim isso é "black magic". O que exatamente esse valor
faz? Por que não precisava dele antes e agora precisa?

ABS()
-------------- Pr�xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120531/682fba37/attachment.html>


More information about the SaoPaulo-pm mailing list