-1

我需要检查配置文件是否存在,所以我写这个是为了测试

#!/usr/bin/perl
use strict;
use warnings;

my $prfle=`~/sqllib/db2profile`;
print $prfle;

但是它什么也没打印...

该脚本检查配置文件,如果未找到,它将询问用户,直到提供有效路径并执行该配置文件,我在 shell 脚本中成功实现了这一点,但在 perl 中遇到了麻烦

4

2 回答 2

4

在 Perl 中,反引号执行一个 shell 命令。例如,这将打印 hi:

`echo hi`;

要检查文件是否存在,请使用-e

$prfle= '~/sqllib/db2profile';
if (-e $prfle) {
    print "File Exists!\n";
}

注意字符串文字周围的单引号'而不是反引号。`

于 2013-02-24T16:03:57.427 回答
2

根据您的评论,我怀疑您想要这样的东西:

my $profile = '';                     # default profile
while (not -e $profile) {             # until we find an existing file
    print "Enter a valid profile: "; 
    chomp($profile = <>);             # read a new profile 
}
qx($profile);                         # execute this file

执行文件的选项不止一种。qx()与反引号相同,将返回标准输出。system()将返回系统给出的执行命令的返回值。exec()将执行命令并退出您的 perl 脚本,有效地忽略exec. 根据您的需要,选择最适合您的选项。

于 2013-02-24T16:37:26.973 回答