我尝试过运行此脚本:http://www.seaglass.com/file-upload-pl.html。在Apache中。因为我正在运行win7 x64,所以我修改了脚本,所以它会:
#! C:\Perl64\bin\perl.exe -wT
而不仅仅是
#! /usr/bin/perl
该页面运行顺畅,但任何上传尝试都失败,并显示Can't open /tmp/outfile for writing - No such file or directory
错误。
我创建了一个/tmp/outfile
目录和一个/tmp/outfile.txt
文件。
我是Perl的新手,因此不知道会出现什么问题。
请指教。
答案 0 :(得分:2)
/ tmp / outfile是输出文件名,而不是目录名。创建C:\ tmp,但如果您确实创建了该目录,则删除C:\ tmp \ outfile。
答案 1 :(得分:0)
Unix路径组件使用正斜杠分隔,而不是反斜杠,在路径中无法明确看到驱动器。 Perl可以在Windows上处理/
作为路径分隔符,将C:
视为文件系统根目录。 (谢谢,jimtut!)因此,Unix路径/tmp/outfile
在Windows上转换为C:\tmp\outfile
。它是一个(可能不存在的)文件的路径,其中应存储上载的内容。
如果您想确定代码的可移植性,请使用File :: Spec模块构建路径。它允许避免在Unix上显式编写路径分隔符(/
,在Windows上编写\
)。
使用Windows风格的路径时,请记住在将\
写入双引号字符串时将其翻倍。 ("C:\\tmp\\outfile"
)转义问题与shell,PHP和许多其他语言相同......