我正在尝试使用CGI通过perl打印网页的标题。
我需要获得像
这样的东西<link href="css/mob.css" rel="stylesheet" type="text/css" media="only screen and (max-width:749px)" />
<link href="css/main.css" rel="stylesheet" type="text/css" media="only screen and (min-width:750px)" />
<link href="css/print.css" rel="stylesheet" type="text/css" media="print" />
<!--[if lt IE 9]>
<link href="css/main.css" rel="stylesheet" type="text/css" />
<![endif]-->
但是我遇到了“媒体”属性的问题 我试过
-style=> {
-src=> [
'../css/main.css',
'../css/print.css',
'../css/mob.css'
],
-media=> [
'only screen and (min-width:750px)',
'print',
'only screen and (max-width:749px)'
]
}
但结果是
<link rel="stylesheet" type="text/css" href="../css/main.css" media="ARRAY(0x1ae6bb0)"/>
<link rel="stylesheet" type="text/css" href="../css/print.css" media="ARRAY(0x1ae6bb0)"/>
<link rel="stylesheet" type="text/css" href="../css/mob.css" media="ARRAY(0x1ae6bb0)"/>
(如果我使用单个媒体参数,一切正常,但我需要每个css的媒体) 相反,如果我使用多样式的文字,他们会互相覆盖。
&lt; - if - &gt;怎么样?部分?我想我应该写任意内容(因此也解决了以前的问题),但我无法编译。
提前致谢。
答案 0 :(得分:3)
-media
选项只接受单个字符串,但您传递的是数组引用。 CGI documentation介绍了如何使用<link>
函数生成更复杂的Link
代码:
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(Link);
my $q = CGI->new;
my @head = (
Link({ -rel => 'stylesheet', -type => 'text/css', -src => '../css/main.css',
-media => 'only screen and (min-width:750px)' }),
Link({ -rel => 'stylesheet', -type => 'text/css', -src => '../css/print.css',
-media => 'print' }),
Link({ -rel => 'stylesheet', -type => 'text/css', -src => '../css/mob.css',
-media => 'only screen and (max-width:749px)' }),
);
print $q->header,
$q->start_html({ -head => \@head }),
$q->h1('foo'),
$q->end_html;
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>Untitled Document</title>
<link type="text/css" media="only screen and (min-width:750px)" src="../css/main.css" rel="stylesheet" />
<link type="text/css" media="print" src="../css/print.css" rel="stylesheet" />
<link type="text/css" media="only screen and (max-width:749px)" src="../css/mob.css" rel="stylesheet" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>foo</h1>
</body>
</html>
请注意,尽管CGI.pm 可以生成HTML,但它很难以维护。我建议使用像Template Toolkit这样的模板系统。
答案 1 :(得分:1)