我是配置 perl 的新手,我正在尝试找到设置一些常用变量的最佳方法。我知道有很多方法可以做到这一点,但我想找到“最好的”;)。我在我的根目录中找到了一个交叉的 .perl_env 文件,但找不到太多关于它的文档。这是我可以保留 BINDIR 和 VARDIR (我在 perl 脚本中使用的位置)等变量的地方,还是有更好的方法。谢谢!!
问问题
216 次
4 回答
2
嗯,我从来没有听说过.perl_env
,它不在文档中:
$ perldoc perlrun | grep .perl_env || echo "not found"
not found
但无论如何,让我们试一试。
$ echo '$ENV{FOO}="BAR";' >~/.perl_env
$ FOO=BAZ perl -E'say $ENV{FOO}'
BAZ
不,不起作用。
于 2012-10-16T19:06:28.620 回答
2
像其他人一样,我从未听说过.perl_env
文件。另外我假设您的意思是要设置 Perl 全局变量,因为如果您要设置系统全局变量(环境变量),您应该在 Bash 脚本中执行此操作。
无论如何,如果您真的想这样做,我会创建一个名为的文件MyGlobalVariables.pm
并将其放在您的 PERL5LIB 目录中。
package MyGlobalVariables;
use strict;
use warnings;
use parent 'Exporter';
our @EXPORT = qw/$SomeVar/;
our $SomeVar = 'Some Value';
请记住,每个变量都必须添加到@EXPORT
数组中。
然后在你的脚本中你可以写use MyGlobalVariables;
,瞧,它们就在那里。这种机制很像 LaTeX 中的自定义样式文件;当然那是一种宏语言。
说了这么多,我真的不认为这是一个好主意。为什么?两个原因:
- 您看不到这些变量的初始化,要记住您必须查看其他文件。
- 这些变量必须是真正的全局变量而不是词法变量。除非有真正的理由,否则总是应该使用词汇(
my
而不是)。our
于 2012-10-17T04:35:01.517 回答
1
如果要处理配置文件以在脚本之间共享变量,请参见以下示例:
输入文件:
$ cat /tmp/config
[name1]
val1=foobar
val2=qux
[name2]
val1=10
val2=100
Perl代码:
$ perl -we '
use Data::Dumper;
use Config::IniFiles;
my $ini = new Config::IniFiles(
-file => "/tmp/config", -allowcontinue => 1
);
print Dumper $ini->{"myparms"};
'
输出:
$VAR1 = {
'name2' => [
'val1',
'val2'
],
'name1' => [
'val1',
'val2'
]
};
相反,如果您需要一个shell
变量来共享,例如,如果使用bash
:
$ echo "export MYVAR=foobar" >> ~/.bashrc
$ . !$
$ perl -le 'use Env qw/MYVAR/; print $MYVAR;'
于 2012-10-16T19:13:27.783 回答
1
对于像这样的全局变量,我将它们设置在环境中(我使用 Windows,但显然你可以在 Unix 中做同样的事情)。在 Perl 中,环境存储在%ENV
变量(系统的一部分)中。您可以将 BINDIR 称为$ENV{BINDIR}
.
于 2012-10-17T03:24:01.983 回答