如何在Perl脚本中导入.env文件共享环境变量?
实现Perl脚本读取自定义环境变量文件
步骤1:创建environment.env文件
编写环境变量配置文件,每行定义一个键值对,支持#开头的注释和空行:
# 数据库配置 DB_HOST=localhost DB_PORT=5432 # API密钥 API_KEY="abc123-xyz789" APP_NAME=MyPerlApp
步骤2:在Perl脚本中加载环境变量
有两种常用实现方式,按需选择:
方式一:手动解析文件(无需额外模块)
如果不想依赖第三方CPAN模块,直接手动读取并解析env文件,将以下代码添加到script1.pl和script2.pl的开头:
# 加载环境变量文件 open my $env_file, '<', 'environment.env' or die "无法打开环境变量文件: $!"; while (my $line = <$env_file>) { chomp $line; # 跳过空行和注释行 next if $line =~ /^\s*$/ || $line =~ /^\s*#/; # 匹配键值对格式(支持值两端的引号) if ($line =~ /^\s*([A-Za-z_]\w*)\s*=\s*(.*)\s*$/) { my ($key, $value) = ($1, $2); # 移除值两端的单/双引号 $value =~ s/^(['"])(.*)\1$/$2/; # 写入%ENV哈希 $ENV{$key} = $value; } } close $env_file; # 示例:使用环境变量 print "当前数据库地址: $ENV{DB_HOST}\n"; print "API密钥: $ENV{API_KEY}\n";
方式二:使用CPAN模块(更简洁)
如果可以安装第三方模块,推荐使用Env::Reader,步骤如下:
- 先安装模块:
cpanm Env::Reader
- 在Perl脚本中加载并使用:
use Env::Reader; # 加载环境变量文件 Env::Reader->load('environment.env'); # 使用环境变量 print "应用名称: $ENV{APP_NAME}\n"; print "数据库端口: $ENV{DB_PORT}\n";
注意事项
- 确保
environment.env路径正确:若脚本与env文件不在同一目录,使用绝对路径(如/home/user/environment.env)或正确相对路径 - 生产环境下,设置env文件权限为
600(仅所有者可读),避免敏感信息泄露:
chmod 600 environment.env
- 若环境变量值包含特殊字符(如空格、&),建议用单/双引号包裹,手动解析代码会自动处理引号
内容的提问来源于stack exchange,提问作者Kunal Bhangale
相关产品推荐
相关产品推荐

