我需要检查配置文件是否存在,所以我写这个是为了测试
#!/usr/bin/perl
use strict;
use warnings;
my $prfle=`~/sqllib/db2profile`;
print $prfle;
但是它什么也没打印...
该脚本检查配置文件,如果未找到,它将询问用户,直到提供有效路径并执行该配置文件,我在 shell 脚本中成功实现了这一点,但在 perl 中遇到了麻烦
我需要检查配置文件是否存在,所以我写这个是为了测试
#!/usr/bin/perl
use strict;
use warnings;
my $prfle=`~/sqllib/db2profile`;
print $prfle;
但是它什么也没打印...
该脚本检查配置文件,如果未找到,它将询问用户,直到提供有效路径并执行该配置文件,我在 shell 脚本中成功实现了这一点,但在 perl 中遇到了麻烦
在 Perl 中,反引号执行一个 shell 命令。例如,这将打印 hi:
`echo hi`;
要检查文件是否存在,请使用-e
:
$prfle= '~/sqllib/db2profile';
if (-e $prfle) {
print "File Exists!\n";
}
注意字符串文字周围的单引号'
而不是反引号。`
根据您的评论,我怀疑您想要这样的东西:
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
. 根据您的需要,选择最适合您的选项。