perl - 如何使Perl文件操作平台无关?

标签 perl

我在 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/

相关文章:

perl - 使用打印到屏幕的参数对 Perl 函数进行单元测试

arrays - 在perl中创建数组的数组并从数组中删除

linux - 如何在XML文件中的单词后面添加变量内容

unit-testing - 有没有办法在你的单元测试中覆盖 Perl "use constant"?

perl - 如何找到 Perl 脚本使用的所有模块?

linux - 如何在 Fedora 系统中每小时运行一个 Perl 脚本。我有一个 perl 脚本,它将检查 IP 中的端口是否打开

perl - DBD-mysql 已安装,但仍然出现错误 "install_driver(mysql) failed: Can' t locate DBD/mysql.pm in @INC”

performance - Perl 速度 : difference between $a = $a. $b 和 $a .= $b

perl - 使用 shuttlecloud 获取谷歌联系人

html - 如何从文本摘录中获取xpath路径