如何理解Perl文件I / O中@Controller
class MyController : ApiBaseController() {
@GetMapping("/something/{id}")
fun getSomething(@PathVariable("id") id: UUID) {
throw NotImplementedError()
}
}
函数的以下用法?
open()
我试图找到这种语法in the docs,但没找到;请注意有一个。 (点)在“>”之后。
所有我无法理解的是使用dot,其余我知道。
答案 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 $!;
除了现在的词法文件句柄以及模式和文件名的分离之外,我们还检查此代码中的错误,这总是一个好主意。