我想为我需要在Perl CGI程序中打印的字体设置字体颜色和样式。如何在Perl CGI程序中使用printf获取彩色输出?
我们没有使用CPAN.txt文件来安装模块使用Term::ANSIColor
和所有。
例子:
print "Hello world";
我想为我需要在Perl CGI程序中打印的字体设置字体颜色和样式。如何在Perl CGI程序中使用printf获取彩色输出?
我们没有使用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 类可以elswhere在你的HTML标记被重用。
你也可以把所有的CSS到它自己的CSS文件(例如my.css
):
.hello {
font-size: 1.5em;
color: #555555;
font-family: "Times New Roman", Times, serif;
}
然后<link>
,在你的输出HTML:
...
<head>
<link rel="stylesheet" type="text/css" href="my.css">
</head>
<body>
<div><span class="hello">Hello World</span></div>
...
当涉及到使用的perl ,那么你最好利用templating来解决这个问题。将HTML放入模板文件中,通过如HTML::Template
或Template::Toolkit
之类的内容加载模板,填充所需的任何值,然后从该模板输出HTML页面。
这使您可以远离编程逻辑分离“标记/ html”,避免内联文档的混乱,并使日后的代码维护更容易。
如果您的输出具有“动态”颜色(可能会在页面上更改的颜色),请将每个颜色定义为一个类,然后使用模板设置要使用哪个类来提供所选样式。
原始问题回答 (当它出现,输出是一个终端)
TERMCAP可以提供颜色(具体取决于您的环境中TERM
集)。
您可以通过Term::ScreenColor
CPAN模块使用的termcap:
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
。
感谢您为exaplaining为什么'Term :: ANSIColor'已弃用 –
如果我们不使用CPAN模块,那么我如何给cgi文件中的颜色模块? –
如果你的输出是“cgi”(即一个网页),那么ansi颜色序列将不起作用,你应该研究CSS - 可能是http://search.cpan.org/dist/CSS/CSS.pm(尽管这是更多CPAN模块:) –
按照更新的问题回答。 Drav已经向您展示了如何在终端中打印彩色输出。
对于在浏览器中打印彩色信息只需使用CSS。编辑您的HTML /模板文件以包含相关的HTML标签和样式表。
如果你想从你的CGI脚本提供样式的数据,那么你可以这样做下面
print h1({-style=>'Color: red;'},'Hello world');
另外:问这样的基本问题之前,请先阅读CGI documentation第一。
http://perldoc.perl.org/Term/ANSIColor.html –