gpt4 book ai didi

Windows (XP)/Unix (Solaris) 上的 Perl 脚本配置和相对路径实现

转载 作者:行者123 更新时间:2023-12-01 12:01:39 28 4
gpt4 key购买 nike

你好,

我遇到了一个关于 perl 脚本开发的难题。我使用标准(基本)Perl 安装编写了一个小的 Perl 脚本。我有以下设置:

C:\MyScript\perl.pl
C:\MyScript\configuration\config.ini
C:\MyScript\output\output.txt

这是 perl.pl 源代码:

$config      = '/configuration/config.ini';
$conf = Config::IniFiles->new( -file => $config_file );
$output_dir = conf->val('output', 'out_dir');
$output_file = "$output_dir/output.txt";

open (out, ">$output_file") || die ("It's not your day mate!");
print out "This is a test...";
close out;

这是config.ini的内容:

[output]
output_dir = C:\MyScript\output

我遇到的问题是第二行 ($conf) 似乎无法在该位置打开文件。因为我将在 windows 和 unix 环境中使用这个脚本(不安装任何附加模块),所以我想知道如何解决这个问题?我希望创建一个完全可通过 config.ini 文件配置的脚本。但是,配置只有在我给它绝对路径时才有效,如下所示:

$config = 'C:\MyScript\configuration\config.ini';

但是由于这将被部署到多个不同的环境,修改脚本源是不可能的。你们会推荐什么?应该如何处理这种情况?

非常感谢任何帮助和/或建议。

祝一切顺利,三菱商事

最佳答案

问题出在$config赋值行——

$config      = '/configuration/config.ini';

由于前导“/”,这从根目录搜索 config.ini,将路径解释为绝对路径而不是相对路径。尝试将其更改为

$config      = './configuration/config.ini';

虽然只有当您从“MyScript”目录执行 perl 脚本时,这才有效。查看此类情况下的 FindBin 模块,或者您可以操纵 $0 变量来获取您的 perl 脚本路径。

关于Windows (XP)/Unix (Solaris) 上的 Perl 脚本配置和相对路径实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/788983/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com