小编iLi*_*irt的帖子

自动调用作为子例程引用的哈希值

我有一个散列,其中有一些值不是标量数据,而是返回标量数据的匿名子程序.我想让这对于在哈希中查找值的代码部分完全透明,这样它就不必知道某些哈希值可能是返回标量数据的匿名子例程而不仅仅是普通的标量数据.

为此,有没有办法在访问其密钥时执行匿名子例程,而不使用任何特殊语法?这是一个简化的例子,说明了目标和问题:

#!/usr/bin/perl

my %hash = (
    key1 => "value1",
    key2 => sub {
        return "value2"; # In the real code, this value can differ
    },
);

foreach my $key (sort keys %hash) {
    print $hash{$key} . "\n";
}
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

perl ./test.pl
value1
value2
Run Code Online (Sandbox Code Playgroud)

相反,这就是我得到的:

perl ./test.pl
value1
CODE(0x7fb30282cfe0)
Run Code Online (Sandbox Code Playgroud)

perl hash anonymous-function data-structures

4
推荐指数
1
解决办法
413
查看次数

如何在homebrew上使用openSSL在macOS上编译Python 3.6.2?

我正在尝试根据https://bugs.python.org/issue29095上的说明在macOS 10.11上编译Python 3.6.2 .

我用自制OpenSSL的安装到标准位置,然后加入LDFLAGS,CFLAGS以及CPPFLAGS我ENV:

$ printenv | grep FLAGS
LDFLAGS=/usr/local/Cellar/openssl/1.0.2l/lib/
CFLAGS=-I/usr/local/Cellar/openssl/1.0.2l/include/openssl
CPPFLAGS=-I/usr/local/Cellar/openssl/1.0.2l/include/openssl
Run Code Online (Sandbox Code Playgroud)

然后在同一个shell中,我将Python编译到我的用例所需的自定义位置:

$ sudo ./configure --prefix=/oebuild/python/python-3.6.1
$ sudo make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)

但是,SSL模块无法构建.构建日志说明了这一点:

Python构建成功完成!找不到构建这些可选模块的必要位:_gdbm _ssl ossaudiodev
spwd
要查找必要的位,请在detect_modules()中的setup.py中查找模块的名称.

python macos openssl compilation

4
推荐指数
2
解决办法
3672
查看次数

需要帮助从标量上下文中获取perl数组

我有一个perl数组,我需要以下列方式存储:

 $self->{spec}->{allImages} = @allImages;
Run Code Online (Sandbox Code Playgroud)

然后我需要稍后检索内容:

 print Dumper($self->{spec}->{allImages});
Run Code Online (Sandbox Code Playgroud)

这会产生:

 $VAR1 = 10;
Run Code Online (Sandbox Code Playgroud)

(数组中的项目数).

如何摆脱标量上下文并将$ self - > {spec} - > {allImages}作为列表返回?

arrays perl scalar-context

0
推荐指数
1
解决办法
66
查看次数