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

Aureliano Guedes guedes_1000 em hotmail.com
Quinta Maio 31 07:18:29 PDT 2012


Infelizmente isso foi como andar pra traz, na minha opinião. Eu não sabia disso, alias ainda estou preso no perl 5.14.

Caso haja algum motivo para essa mudança, quando alguem descobrir me explique.

From: creaktive em gmail.com
Date: Thu, 31 May 2012 11:09:26 -0300
To: rio-pm em pm.org; saopaulo-pm em mail.pm.org
Subject: [Rio-pm] variável $^H no Perl 5.16

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()




_______________________________________________
Rio-pm mailing list
Rio-pm em pm.org
http://mail.pm.org/mailman/listinfo/rio-pm 		 	   		  
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20120531/5cbfba23/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm