2010-04-19 101 views
-1

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

像贝壳文件:

。 〜用户/ .profile

+3

Perl不是shell解释器。为了让这个问题变得有意义,你需要解释一下你正在尝试阅读的.profile的哪些方面。 – 2010-04-19 20:40:08

回答

6

您的意思是“profile”的具体含义?

如果您的意思是“检索您的shell通过.profile设置的shell环境变量的值”,那么是的 - 您可以通过特殊的%ENV哈希来完成。

如果你的意思是“像在shell中一样读取在.profile中设置的实际变量”,这是可能的,但要做到“正确”则需要解析任意shell脚本并清理任何非环境变量赋值, "。 〜/ .profile中; env`“`并解析输出

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

如果你的意思是“提供一个通用的配置,运行没有这些Perl程序任何特殊代码来读取一个单独的配置文件中的任何Perl程序,排序就像任何shell脚本从shell中获取.profile的东西一样“,那么asnwer就是”可能“。你可以利用PERLOPT环境变量来提供可以加载特殊模块的选项(通过-I)cont确定通过其“import()”设置的配置。 尽管有些可行,但我强烈建议不要使用,这似乎是一个可怕的黑客攻击。

0
 
$u=`echo -n ~user`; 
open F, "<$u/.profile" || die; 
while(<F>) 
{print} 
1

如果您有(或其他配置通过设立)一个shell脚本bash的配置值,并希望这样的生效只是一个程序的一次执行的时间,你可以使用一个子shell:

(source ~/my_bash_file.sh; perl my_perl_script.pl) 

可以使用%ENV哈希(见Perl的特殊变量的指标,perldoc perlvar)访问的Perl shell环境变量:

my $user = $ENV{USER}; 
my $home_dir = $ENV{HOME}; 

实施例:

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 /醚

当作为(source ~/my_bash_file.sh; perl my_perl_script.pl)执行时,所述输出为:

HOME的值是/ home /不通

3

Env::Sourced应该做你所需要的。

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