如何使Perl文件操作平台无关?
我在 Linux 上使用 Perl,但我开始使用 File::Spec->catfile
使我的 Perl 代码也可以在 Windows 上运行,例如,
$tmp = File::Spec->catfile($ENV{HOME}, "tmp");
而不是
$tmp = "$ENV{HOME}/tmp";
But how can I make the 以下代码可移植:
my @files = <$ENV{HOME}/tmp/*>;
它使用斜杠作为文件分隔符,所以我认为它在 Windows 上不起作用。我不知道如何在该表达式中使用 File::Spec->catfile
?
I use Perl on Linux, but I started using File::Spec->catfile
to make my perl code run on Windows as well, e.g.,
$tmp = File::Spec->catfile($ENV{HOME}, "tmp");
instead of
$tmp = "$ENV{HOME}/tmp";
But how can I make the following code portable:
my @files = <$ENV{HOME}/tmp/*>;
It uses slashes as file separators, so I assume it won't work on Windows. And I don't see how to use File::Spec->catfile
in that expression?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于
catfile
仅返回一个可用作文件名的字符串,因此您可以执行以下操作(未经测试):但是
$ENV{HOME}
不太可能在 Windows 系统上进行设置。您可以考虑使用
File::Spec->tmpdir()
。Since
catfile
just returns a string that can be used as a file name, you can do something like this (untested):But
$ENV{HOME}
isn't likely to be set on a Windows system.You might consider using
File::Spec->tmpdir()
.可以使用
glob
函数:正如其他评论所言声明中,Perl 在 Windows 中与
/
一起工作。不过,为了让它更便携,我会考虑上面的用法。The
glob
function can be used:As the other comments have stated, Perl works with
/
in Windows. However, to make it more portable, I will consider the above usage.