我想为我需要在Perl CGI程序中打印的内容设置字体颜色和样式。
我们不使用 CPAN.txt 文件来安装模块使用Term::ANSIColor
和所有。
例:
print "Hello world";
CGI 相关答案 (当问题被修改为 CGI 时(
如果你想在网页上实现颜色,那么你可以通过CSS来实现。
在 html 标记中,您可以应用直接标记来设置字体样式、大小和颜色:
<span style="font-size: 1.5em; color: #555555; font-family: "Times New Roman", Times, serif;">Hello World</span>
建议将 CSS 与标记分开,改用 CSS 样式属性。
...
<head>
<style>
.hello {
font-size: 1.5em;
color: #555555;
font-family: "Times New Roman", Times, serif;
}
<style>
</head>
<body>
<div><span class="hello">Hello World</span></div>
...
通过这种方式,CSS 类可以在 HTML 标记中重用 elswhere。
你也可以把所有的CSS放到它自己的CSS文件中(示例my.css
(:
.hello {
font-size: 1.5em;
color: #555555;
font-family: "Times New Roman", Times, serif;
}
然后在输出的 HTML 中<link>
:
...
<head>
<link rel="stylesheet" type="text/css" href="my.css">
</head>
<body>
<div><span class="hello">Hello World</span></div>
...
当涉及到使用perl时,你最好通过使用模板来解决这个问题。将 HTML 放入模板文件中,通过诸如 HTML::Template
或 Template::Toolkit
之类的内容加载模板,填充所需的任何值,然后从该模板输出 HTML 页面。
这允许您将"标记/html"与编程逻辑分开,避免内联文档的混乱,并使代码的未来维护更容易。
如果您的输出具有"动态"颜色(页面上可能会更改的颜色(,请将每个颜色定义为一个类,并使用模板设置用于提供所选样式的类。
原始问题答案(当输出似乎指向终端时(
术语帽可以提供颜色(取决于环境中设置的TERM
(。
您可以通过Term::ScreenColor
CPAN 模块使用术语上限:
use Term::ScreenColor;
my $term = new Term::ScreenColor();
$term->green->puts('This is green')->reset();
我不建议Term::ANSIColor
,因为它只是发出原始的ANSI颜色序列,并且无法识别您的术语环境。(如果您在没有颜色的术语上使用Term::ANSIColor
运行代码,则最终会在输出中产生[34;2m
类型序列(。
注意:此模块依赖于Term::Screen
而而又需要Term::Cap
。
根据更新的问题回答。Drav已经向您展示了如何在终端中打印彩色输出。
要在浏览器中打印彩色信息,只需使用 CSS。编辑您的 HTML/模板文件以包含相对的 HTML 标记和样式表。
如果你想从你的CGI脚本中提供样式数据,那么你可以做如下的事情
print h1({-style=>'Color: red;'},'Hello world');
另外:在提出此类基本问题之前,请先阅读CGI文档。