我在的Windows: - /在我的劇本我:perl的,如果(-e「與空間路徑窗口){}
$ENV{'Powmig Path'}powermt
這給我:
C:\Program\ Files\EMC\PowerPath\powermt
如果我做一個if(-e $ENV{'Powmig Path'}powermt)
這是行不通的。
我必須嘗試改變一些替代\/
我的路3210我也嘗試添加更多的雙引號,但似乎沒有:-(
爲例工作:
#!/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"
經過一番嘗試用不同的文件,問題從空間來...
有人可以幫助我嗎?
THX在進階
也許你應該包括您使用的實際*代碼*。我在文件測試中使用'-e'命令沒有問題,它們在windows中有空格。你的問題很可能僅僅是你的代碼出了問題。 – TLP
此外,永遠不會包含近似代碼。總是包含你自己使用的代碼,它描述了你確切的問題。 – TLP
re:編輯:在你改變它之前,你還沒有對字符串進行'-e'文件測試。兩部分:1)您正在使用'-x'文件測試。 2)你在更改字符串之後正在進行文件測試。 – TLP