作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 HERE DOCUMENT 中嵌入 token ,然后使用 (s)printf
在最后一个字符串上用实际值替换这些标记。原因是:这使得构建 HERE DOCUMENT 变得更加容易,其中的某些部分是不同的。
解释一下,这是我在 Python 中将如何做到这一点的。从下面的小例子中,我会更清楚我想要做什么。在 Python r"""
类似于 Perl <<EOT
,即它构建多行原始字符串。字符串必须以 """
结尾类似于以 EOT
结尾的 Perl .
s=r"""
\documentclass[12pt,titlepage]{article}
\begin{document}
\title{%(title)s}
\date{%(date)s}
some text
\end{document}"""
print s % {"title": "My report","date": "1/1/2016"}
\documentclass[12pt,titlepage]{article}
\begin{document}
\title{My report}
\date{1/1/2016}
some text
\end{document}
%(title)
和
%(date)
最后被给定的值替换。这与执行
sprintf('%s',some_string)
非常相似。 ,但在这里它应用于原始字符串本身。这非常方便,并且使构建原始字符串变得非常容易。
#!/usr/bin/perl -w
use strict;
use warnings;
my $title = "My report";
my $date = "1/1/2016";
my $s =<<'EOT';
\documentclass[12pt,titlepage]{article}
\begin{document}
\title{%(title)s}
\date{%(date)s}
some text
\end{document}
EOT
print($s); #how to format this in order to replace %title and %date
#emmbeded in $s with the values above? is it possible?
EOT
最左边,后面没有空格。
<<"EOT"
由于多种原因无法正常工作,并且必须使用非插值 HERE DOCUMENT。所以这样的事情对我不起作用:
my $s =<<"EOT";
\documentclass[12pt,titlepage]{article}
\begin{document}
\title{$title}
\date{$date}
some text
\end{document}
EOT
最佳答案
你可能把事情复杂化了。是 Perl 有 sprintf
是的,您可以使用heredoc指定格式字符串,但是使用变量插值会容易得多:
#!/usr/bin/perl -w
use strict;
use warnings;
my $title = "My report";
my $date = "1/1/2016";
my $s =<<"EOT";
\documentclass[12pt,titlepage]{article}
\begin{document}
\title{$title}
\date{$date}
some text
\end{document}
EOT
print $s;
EOT
周围更改了您的单引号。双引号。
"$title"
但如果您需要在后面加上文字字母、数字或下划线,则只需将花括号括在变量名周围:
"${title}_word"
.
#!/usr/bin/perl -w
use strict;
use warnings;
my $title = "My report";
my $date = "1/1/2016";
my $s =<<'EOT';
\documentclass[12pt,titlepage]{article}
\begin{document}
\title{%s}
\date{%s}
some text
\end{document}
EOT
printf($s, $title, $date);
sprintf
不支持命名占位符。
$
字符串中的字符也需要转义。
关于perl - 是否可以应用 sprintf 来格式化 HERE DOCUMENT 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31015655/
我是一名优秀的程序员,十分优秀!