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