Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Bash脚本中访问perl模块_Perl_Bash - Fatal编程技术网

在Bash脚本中访问perl模块

在Bash脚本中访问perl模块,perl,bash,Perl,Bash,我有一个带有数据定义(散列、数组等)的perl模块,有没有办法从bash脚本中访问这些数据?这对我不起作用 #!/bin/bash perl -e 'use Data' tests=`perl -e "@tests"; ` echo "Perl tests = ${tests}" # prints "Perl tests = " 该模块如下所示: our @EXPORT_OK = qw( @tests ); our @tests = qw( 1 2 3 4 5 ); 您可以

我有一个带有数据定义(散列、数组等)的perl模块,有没有办法从bash脚本中访问这些数据?这对我不起作用

#!/bin/bash

perl -e 'use Data'
tests=`perl -e "@tests"; `
echo "Perl tests = ${tests}"         # prints "Perl tests = "
该模块如下所示:

our @EXPORT_OK = qw( @tests );
our @tests = qw( 1 2 3 4 5 );

您可以使用命令行中带有-M的模块

perl -MData -e'print map {"$_\n"} @tests;'

在您给出的代码中,您运行一个加载数据的解释器。它退出了。然后运行第二个解释器,它打印@tests。因为这是第二个解释器执行的唯一操作,它未初始化,并且不打印任何内容。

如果您在
数据
模块中有包变量
@tests

perl -MData -e 'print "$_\n" for @Data::tests'
对于perl 5.10及更高版本

perl -MData -E 'say for @Data::tests'

perl-MData-le'print for@Data::tests'
perl-MData-E'say for@Data::tests'(5.10+)这非常有效,谢谢,有没有办法访问数据模块中的散列?@user3487205散列应该是什么样子的,例如,
perl-MData-E'对键%Data::tests'
key1:val1\nkey2:val2'