小编rbr*_*ner的帖子

Perl:Math64 :: Int64应该在"安全"隔间内工作吗?

(我的第一篇文章是堆栈溢出,希望我使用正确的格式)

我需要评估在"安全"隔离区中操作64位整数的代码.由于我提供了要评估的脚本和代码,我可以做一个正常的评估,但我想通过使用"安全"来尝试通过无意识的错误使事情更加健壮.

我是否应该期望Math :: Int64在"安全"隔间内正常工作?我在Perl版本,整数位宽和操作系统的不同位数上得到了相互矛盾的结果.(见下文).

所有都在调试器内以相同的方式失败.

我确信我在某个地方做了一些不正确的假设,但无法弄清楚在哪里.

谢谢你提供的所有帮助.

代码示例(dummy.pl)

use strict;
use warnings;
use Exporter;
use Safe;
use Math::Int64 qw(int64 hex_to_int64);
#use Math::Int64 ':native_if_available';

my $safe = new Safe 'Root';
$safe->permit( qw(:browse) );
$safe->share( qw/int64 hex_to_int64 my_sprintf/ );

my $X = 0xFF & (hex_to_int64("0xAA12345678") >> 4);
print my_sprintf("X ",$X);

my $Z = evalme('$X = 0xFF & (hex_to_int64("0xAA12345678") >> 4)', $safe);
print my_sprintf("Z ",$Z);

print evalme('my_sprintf("Xe", $X)',$safe);

exit;


sub my_sprintf {
    my ($string, $value) = @_;
    return sprintf( "Value of %s: …
Run Code Online (Sandbox Code Playgroud)

perl perl-module

6
推荐指数
1
解决办法
240
查看次数

标签 统计

perl ×1

perl-module ×1