Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
有没有办法在Perl中加载配置文件?_Perl_Unix_Profile - Fatal编程技术网

有没有办法在Perl中加载配置文件?

有没有办法在Perl中加载配置文件?,perl,unix,profile,Perl,Unix,Profile,有没有办法在Perl中加载配置文件 与shell文件类似: ~用户/.profile 你所说的“个人资料”具体是什么意思 如果您的意思是“检索您的shell通过.profile设置的shell环境变量的值”,那么是的,您可以通过一个特殊的散列来实现 如果您的意思是像shell本身一样“读取.profile中设置的实际变量”,那么这是可能的,但要做到“正确”,则需要解析任意shell脚本并清除任何不是环境变量赋值的内容,或者执行“~/.profile;env``并解析输出 如果您的意思是“为通过单

有没有办法在Perl中加载配置文件

与shell文件类似:

~用户/.profile


你所说的“个人资料”具体是什么意思

如果您的意思是“检索您的shell通过.profile设置的shell环境变量的值”,那么是的,您可以通过一个特殊的散列来实现

如果您的意思是像shell本身一样“读取.profile中设置的实际变量”,那么这是可能的,但要做到“正确”,则需要解析任意shell脚本并清除任何不是环境变量赋值的内容,或者执行
~/.profile;env``并解析输出

如果您的意思是“为通过单独配置文件运行的任何Perl程序提供通用配置”,则需要向这些Perl程序添加代码以读取此配置文件(有许多CPAN模块用于读取各种配置文件)

如果您的意思是“为任何运行的Perl程序提供一个通用配置,而这些程序中没有任何特殊代码来读取一个单独的配置文件,就像任何shell脚本从.profile获取内容一样,感谢shell”,那么asnwer是“可能是”。您可以利用
PERLOPT
环境变量来提供选项,这些选项将加载一个特殊模块(通过-I),其中包含通过其“import()”设置的配置。虽然有点可行,但它似乎是一个可怕的黑客,我强烈建议不要使用它

$u=`echo-n~用户`;
打开F,“如果您在shell脚本(或由shell脚本设置的其他配置)中有bash配置值,并且希望该值仅在程序的一次执行期间生效,则可以使用子shell:

( source ~/my_bash_file.sh; perl my_perl_script.pl )
您可以使用
%ENV
散列访问Perl中的shell环境变量(请参阅Perl特殊变量的索引,):


例如:

my_bash_file.sh:

#!/bin/bash
export HOME="/home/nowhere"
my_perl_script.pl:

#!/usr/bin/perl
print "the value of HOME is $ENV{HOME}\n";
当作为
perl my_perl_script.pl执行时,my_perl_script.pl打印:

HOME的值是/HOME/ether

当作为
(source~/my\u bash\u file.sh;perl my\u perl\u script.pl)
执行时,输出为:

家的价值是/家/无处

你应该做你需要的

use Env::Sourced qw(~/user/profile);
print $ENV{VARAIBLE};

Perl不是shell解释器。为了让这个问题有意义,您需要解释您试图读入的.profile的哪一方面。
#!/usr/bin/perl
print "the value of HOME is $ENV{HOME}\n";
use Env::Sourced qw(~/user/profile);
print $ENV{VARAIBLE};