1

我正在使用该Tie::Cfg模块在我的自动化中获取用户详细信息。

问题/问题:

我有一个接受用户详细信息和路径的配置文件。我可以在 Linux 中从配置文件中打印值,但在 Windows 中,由于反斜杠,我无法获得正确的值。

例如:/root/devel/Conf.ini

user=test
password=config
path_linux=\home\basic\
path_wind=C:\Users\rakesh\Documents

我创建了一个模块/root/devel/test.pm

use strict;
use warnings;

use Tie::Cfg;
use parent 'Exporter';

tie our %conf,'Tie::Cfg', READ =>"Conf.ini", WRITE=> "Conf.ini", MODE=> 0777;
our @EXPORT = qw(%conf);
1;

在我的第三个 Perl 脚本/root/devel/local.pl中,我只是打印配置值:

#!/usr/bin/perl
use Tie::Cfg;

print "date : $conf{path_linux} and path : $conf{path_wind} \n";

输出:

$conf{path_linux} = \home\basic\
$conf{path_wind} = C:SERSRAKESHDOCUMENTS

你能帮我解决这个问题吗?

4

1 回答 1

1

Tie::Cfg将 a 应用于eval配置文件中的数据,因此它被视为双引号 Perl 字符串。例如,将\rin\rakesh转换为回车。

您可以Tie::Config改为使用,这会使数据保持不变。你会写

use Tie::Config;
use Fcntl '/O_*/';
tie our %conf,'Tie::Config', O_RDWR;

或者您可以坚持Tie::Cfg并转义配置文件中的所有反斜杠,就像这样

user=test
password=config
path_linux=/home/basic
path_wind=C:\\Users\\rakesh\\Documents
于 2015-01-22T13:38:08.633 回答