我可以使用此处文档附加到字符串吗?
我有一个字符串,我想向其附加格式化的 SQL 块。有没有办法使用此处文档进行追加?或者我是否需要使用此处文档创建一个新字符串并将其附加到现有字符串?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我有一个字符串,我想向其附加格式化的 SQL 块。有没有办法使用此处文档进行追加?或者我是否需要使用此处文档创建一个新字符串并将其附加到现有字符串?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
你可能会说,
但是 Perl 优化了它,
你不需要像 ; 那样设置一个单独的变量
。即使在较旧的 Perls 中,前两个也应该可以正常工作(而对于非常旧的 Perl 5,在某些情况下不起作用,特别是
print < 会丢失此处文档的内容)。
You could probably say
but Perl optimizes that to
You should not need to set up a separate variable as in
; even in older Perls the previous two should work fine (whereas with very old Perl 5 there were some cases that didn't work, notably
print <<EOH;
would lose the contents of the here document).这里的文档非常灵活,可以在大多数使用普通字符串文字的情况下使用。它们可以用作函数调用或复合表达式的一部分。
Perl 用于解析heredoc 的规则允许一些非常奇怪的行为,当找到heredoc 时,将继续解析当前行,直到该行结束。然后perl将停止解析当前表达式并开始读取heredoc直到找到结束标记。一旦它找到在该行上开始的所有此处文档的结束标记,它将继续解析,就好像表达式中没有中断一样。
请注意,该字符串在此处文档 THIRD_BLOCK 正文之前开始,并在此处文档 THIRD_BLOCK 之后结束,但不包含其内容。
虽然您可以非常灵活地使用heredoc语法,但我建议您每个表达式仅使用一个heredoc,并保持表达式简单。如果您需要在一个表达式中使用多个heredoc,或者需要在复杂表达式中使用一个heredoc,那么首先将heredoc分配给一个变量,然后在表达式中使用该变量。
Here docs are very flexible, and can be used in most situations you would use a normal string literal. They can be used as a part of a function call or compound expression.
The rules Perl use to parse the heredoc allow for some very strange behavior, when a heredoc is found the current line will continue to be parsed until that line ends. Then perl will stop parsing the current expression and start reading the heredoc until if finds the end token. Once it finds end tokens for all heredocs that were started on that line it will resume parsing as if there was not an interruption in the expression.
Note that the string starts before the body of the heredoc THIRD_BLOCK, and ends after the heredoc THIRD_BLOCK, but doesn't include its contents.
While you can be very flexible with the heredoc syntax I recommend you only use one heredoc per expression, keep the expression simple. If you need multiple heredocs in one expression or need one in a complex expression then assign the heredoc to a variable first and use that variable in the expression.
是的,你可以。
输出:
Yes, you can.
outputs: