Perl,打印带有多个样式表和媒体查询的标题
我正在尝试使用CGI通过perl打印网页的标题 我需要得到像这样的东西Perl,打印带有多个样式表和媒体查询的标题,perl,header,media-queries,Perl,Header,Media Queries,我正在尝试使用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/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]-->
但结果是
<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使用一个媒体)。相反,如果我使用多种风格的文字,它们会相互覆盖 那角色呢?我想我应该写任意内容(这样也解决了前面的问题),但我无法编译它
提前感谢。-media选项只接受单个字符串,但您正在传递数组引用。描述了如何使用
链接
功能生成更复杂的
标记:
#!/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;
输出:
无标题文件
福
请注意,尽管CGI.pm可以生成HTML,但这是一个巨大的难题,而且不容易维护。我建议改为使用类似的模板系统。-media选项只接受单个字符串,但传递的是数组引用。描述了如何使用
链接
功能生成更复杂的
标记:
#!/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;
输出:
无标题文件
福
请注意,尽管CGI.pm可以生成HTML,但这是一个巨大的难题,而且不容易维护。我建议改为使用类似的模板系统。不要这样做。15年来,CGI.pm中的HTML生成方法被普遍认为是一个坏主意。改用a。不要那样做。15年来,CGI.pm中的HTML生成方法被普遍认为是一个坏主意。改用a。显然,您使用阵列的方式不对。您正在访问和打印ref值(即,
$ar
)。要正确访问,您必须执行类似于@{$ar}
的操作,假设$ar
是您的参考。Lear more at.我没有使用明确的数组,我使用的是函数start\u htmlh您如何将实际参数传递给它?(无论如何,我设法欺骗并打印了媒体。这很可怕,但效果很好)很明显,您使用阵列的方式是错误的。您正在访问和打印ref值(即,$ar
)。要正确访问,您必须执行类似于@{$ar}
的操作,假设$ar
是您的参考。Lear more at.我没有使用明确的数组,我使用的是函数start\u htmlh您如何将实际参数传递给它?(不管怎么说,我设法欺骗并印刷了媒体。这很可怕,但很有效)我用了这个,谢谢。我可以用这种方式输出任意内容吗?不管怎样,我花了一点时间才明白链接它只用于“链接”标记。您可以用这种方式向
标记添加任意属性,例如链接({-foo=>'bar')
输出
。要输出任意类型的内容,只需使用print
,例如print q{some content}代码>(或者更好,一个模板系统)。我用了这个,谢谢。我可以用这种方式输出任意内容吗?不管怎样,我花了一点时间才明白链接它只用于“链接”标记。您可以用这种方式向
标记添加任意属性,例如链接({-foo=>'bar')
输出
。要输出任意类型的内容,只需使用print
,例如print q{some content}代码>(或者更好的是,一个模板系统)。