2016-08-25 35 views

回答

2

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::TemplateTemplate::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

+1

感谢您为exaplaining为什么'Term :: ANSIColor'已弃用 –

+0

如果我们不使用CPAN模块,那么我如何给cgi文件中的颜色模块? –

+2

如果你的输出是“cgi”(即一个网页),那么ansi颜色序列将不起作用,你应该研究CSS - 可能是http://search.cpan.org/dist/CSS/CSS.pm(尽管这是更多CPAN模块:) –

1

按照更新的问题回答。 Drav已经向您展示了如何在终端中打印彩色输出。

对于在浏览器中打印彩色信息只需使用CSS。编辑您的HTML /模板文件以包含相关的HTML标签和样式表。

如果你想从你的CGI脚本提供样式的数据,那么你可以这样做下面

print h1({-style=>'Color: red;'},'Hello world'); 

另外:问这样的基本问题之前,请先阅读CGI documentation第一。