Perl中这个open()用法中dot的含义是什么?

时间:2017-09-26 12:09:45

标签: perl

如何理解Perl文件I / O中@Controller class MyController : ApiBaseController() { @GetMapping("/something/{id}") fun getSomething(@PathVariable("id") id: UUID) { throw NotImplementedError() } } 函数的以下用法?

open()

我试图找到这种语法in the docs,但没找到;请注意有一个。 (点)在“>”之后。

所有我无法理解的是使用dot,其余我知道。

2 个答案:

答案 0 :(得分:12)

这是open的旧的两参数形式的一个例子(现在应该避免使用三参数open)。在Perl中,.是追加运算符。它将两个字符串组合成一个字符串。

您发布的代码行等同于open(FHANDLE, ">$file" ),它只是使用了另一种方法来合并>$file

如今,更好的方法是open(my $fhandle, '>', $file),如您链接的文档中所示。

答案 1 :(得分:8)

这是两个参数open。点.是Perl中的字符串连接运算符。如果使用两个参数调用open,则第二个参数包含模式和路径。

在您的情况下,它将打开$file中指定的文件进行写作。

但是,由于多种原因,你不应该这样做。使用三参数open和词法文件句柄而不是全局GLOB文件句柄更常见。

词法文件句柄确保Perl在超出范围时立即隐式关闭handel。对模式和文件名使用不同的args是一个安全问题,因为否则恶意用户可能会将模式更改走私到文件名中。

open my $fh, '>', $file or die $!;

除了现在的词法文件句柄以及模式和文件名的分离之外,我们还检查此代码中的错误,这总是一个好主意。