当路径包含空格时,Perl文件存在测试失败

时间:2017-09-21 15:03:40

标签: perl if-statement exists

以下是我所谈论的一个例子

$PathPlusFileName gets set in Gtk2 File Chooser dialog SUB

if (-e $PathPlusFileName) {
    print "found file\n";
} else {
    print "did not find file\n";
}

只要PATH名称中没有空格,IF块就可以工作。 尝试双引用路径,没有帮助。 任何有关如何纠正的建议都将受到赞赏。

3 个答案:

答案 0 :(得分:3)

工作正常:

#!/usr/bin/perl

use strict;
use warnings;

my $filename = 'name with spaces'; 
open ( my $testfile, '>', $filename ) or warn $!;

if ( -e "name with spaces" ) { 
   print "\"$filename\" exists\n";
}

我怀疑你会发现别的东西出了问题。我的第一个猜测是 - 你还记得chomp你的意见吗?但是,如果不了解这个值是如何设定的,我们就无法回答。

答案 1 :(得分:0)

事实证明,在包GUI部分工作的前一个程序员已经使这行测试代码保持活动状态。     $ PathPlusFileName = ~s / / \ / g; 一个被删除,如果(-e按预期工作。感谢所有人的帮助和建议!

答案 2 :(得分:-1)

只需将变量放在引号中:

if (-e "$PathPlusFileName")