我使用的是 :-/在我的脚本中我已经:
$ENV{'Powmig Path'}powermt这给了我:
C:\Program\ Files\EMC\PowerPath\powermt如果我做了if(-e $ENV{'Powmig Path'}powermt),它就不工作了。
我试图通过一些替代来改变我的路径\/
我也尝试增加更多的双引号,但似乎没有什么效果:
例:
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec;
if($^O =~ m/^MSWin32$/){
my $tmp = File::Spec->catdir($ENV{'Powmig Path'}, "powermt");
if(-e "\"$tmp\""){
print "powermt found\n";
}else{
print "No multipathing found \"$tmp\"\n";
}
$tmp =~ s/\\/\//g;
if(-e "\"$tmp\""){
print "powermt found\n";
}else{
print "No multipathing found \"$tmp\"\n";
}
}else{
print "Error: Unknow OS\n";
}
exit;输出:
C:\Users\sgargasson\Desktop>perl test.pl
No multipathing found "C:\Program Files\EMC\PowerPath\powermt"
No multipathing found "C:/Program Files/EMC/PowerPath/powermt"在尝试了不同的文件之后,问题从空间开始.
有人能帮我吗?
Adv中的Thx
发布于 2014-01-14 17:58:23
非常感谢TLP
我真是个愚蠢的linux用户!
问题:
my $tmp="$ENV{'Powmig Path'}powermt";解决:
my $tmp="$ENV{'Powmig Path'}powermt.exe";正确的代码是:
#!/usr/bin/perl
use strict;
use warnings;
if($^O =~ m/^MSWin32$/){
if(-e "$ENV{'Powmig Path'}powermt.exe"){
print "powermt found\n";
}else{
print "No multipathing found\n";
}
}else{
print "Error: Unknow OS\n";
}
exit;我太蠢了,我需要取消“隐藏知道扩展”,在这件事上这么多小时.
发布于 2014-01-14 17:58:11
以下是一个问题:
if(-e "\"$tmp\""){你有一套额外的引号。文件名不是"C:\Program Files\whatever",而是C:\Program Files\whatever。只有在命令提示符解释文件名或类似的情况下,您才需要这些额外的引号,这里不是这样的。
尝试这样做,在这里我删除了多余的引号("\"$tmp\""变为"$tmp",与$tmp完全相同):
if ( -e $tmp ) {https://stackoverflow.com/questions/21118633
复制相似问题