我可以使用什么 Perl 模块从 Windows 上的相对路径获取绝对路径(包括文件名)?
我只能想象我没有正确搜索;这似乎是一个显而易见的问题。如果这是重复的,我很抱歉。
我正在编写一个 Perl 程序,它将使用文件名作为命令行参数。我需要将文件名(或附加相对路径的文件名)转换为绝对路径(特别是与 Win32::OLE 一起使用)。
我尝试使用 Cwd 的“abs_path”,这几乎达到了我想要的效果,但它返回它使用 Unix 风格的路径而不是 Win32 风格的路径。
是否有一个可以转换路径的模块,或者可能是一个更好的模块可以首先使用?
I can only imagine I'm not searching correctly; this seems like an obvious question to be asked here. My apologies if this is a duplicate.
I'm writing a Perl program that will take a filename as a command-line argument. I need to convert the filename (or the filename with a relative path attached) to an absolute path (specifically to work with Win32::OLE).
I tried using Cwd's 'abs_path', and that almost does what I want, but it returns it using a Unix-style path instead of a Win32 one.
Is there a module that will convert the path, or perhaps a better module to use in the first place?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我使用 File::Spec 中的
rel2abs
。但您必须小心:这可能会从Cwd
调用getdcwd
,并且它会假设您需要当前驱动器的当前工作目录。如果文件位于其他驱动器上,您必须自行修复该问题或提供第二个参数来设置基本路径。I use
rel2abs
from File::Spec. You have to be careful though: that might callgetdcwd
fromCwd
, and it will assume that you want the current working directory for the current drive. If the file is on some other drive, you'll have to fix that up yourself or supply the second argument to set the base path.我使用 Cwd 的 abs_path,然后在我真正需要时使用正则表达式来转换斜杠。但我发现对于大多数用途来说,Unix 风格的斜杠工作得很好。只是偶尔“将文件名传递给那个烦人的受限程序”,我最终需要转换斜杠。
但是然后..我使用了很多网络路径,无论有没有映射的驱动器引用。您的里程可能会有所不同。
I use Cwd's abs_path and then use a regex to convert the slashes when I really need it done. But I've found that for most uses, Unix-style slashes work just fine. It's only for the occasional "pass a filename to that annoyingly limited program" that I end up needing to convert the slashes.
But then.. I use a lot of network paths, with or without a mapped drive reference. Your mileage may vary.