我在 Linux 上使用 Perl,但我开始使用 File::Spec->catfile
使我的 Perl 代码也可以在 Windows 上运行,例如,
$tmp = File::Spec->catfile($ENV{HOME}, "tmp");
而不是
$tmp = "$ENV{HOME}/tmp";
但是我怎样才能使以下代码可移植:
my @files = <$ENV{HOME}/tmp/*>;
它使用斜杠作为文件分隔符,所以我认为它在 Windows 上不起作用。我不知道如何在该表达式中使用 File::Spec->catfile
?
最佳答案
由于 catfile
仅返回一个可用作文件名的字符串,因此您可以执行以下操作(未经测试):
$tmp = File::Spec->catfile($ENV{HOME}, "tmp", "*");
my @files = glob $tmp;
但是 $ENV{HOME}
不太可能在 Windows 系统上设置。
您可以考虑使用File::Spec->tmpdir()
.
关于perl - 如何使Perl文件操作平台无关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7748359/