windows路径中的路径分隔符被当作转义符的问题

windows路径中的路径分隔符被当作转义符的问题

windows路径中的路径分隔符被当作转义符的问题
得到一个变量,存着上传文件的路径,假设这个变量为 $path
如果用 -e $path 来判断的话,会提示文件不存在,因为windows的路径中路径分隔符'\'被当成转义符了。
有什么好的办法解决吗?有没有函数来处理这类问题?把一个变量的内容单纯当作字符串来处理?
考虑过用证则表达式把变量中的'\'都替换成'\\',但是感觉不大好。
看有的帖子说存路径的时候用' '代替" "就不会有问题。可是存路径的变量本身就是“C:\...”,怎么样比较好呢?
my $path = "D:[color=red.
my $path = "D:[color=red]/[/color]test.txt";
或者my $path = "D:[color=red]\\[/color]test.txt";
[quote]回复给 路杨 : my .
[quote]回复给 路杨 : my $path = "D:[color=red....[/quote]
谢谢~
其实这个变量是CGI取的上传文件的路径,然后这个变量作为参数传到了另一个API里处理,那么就是说要在那个API里用正则表达式把“\”都换成“\\”或者“/”吗?
[quote]回复给 anthony : .
[quote]回复给 anthony : [quote]回复给 sdlxf : [q....[/quote]
嗯,谢谢了~
看来还是得预先把\给换成\\
[quote]回复给 anthony : .
[quote]回复给 anthony : [quote]回复给 sdlxf : [q....[/quote]
疯了,用正则表达式已经不行了,就是认为变量的内容是D:[tab]est.txt,把\转成\\貌似是不行了,它不认为变量里有\
[quote]回复给 sdlxf : [q.
[quote]回复给 sdlxf : [quote]回复给 anthony : ....[/quote]
你怎么还不明白呢。
透过现象看本质有这么难吗?
[quote]回复给 anthony : .
[quote]回复给 anthony : perl -e "print (-e $ARGV....[/quote]
嗯,结果显示是存在 看来不是转义符的问题
可是如果输入桌面上的一个文件的话,或者说只要是C:\Documents and Settings\下面的文件就显示不存在,为什么呢?
[quote]回复给 sdlxf : [q.
[quote]回复给 sdlxf : [quote]回复给 anthony : ....[/quote]

看得有点惊异……你终于发现了……