Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl,打印带有多个样式表和媒体查询的标题_Perl_Header_Media Queries - Fatal编程技术网

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)" /

我正在尝试使用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]-->
但结果是

<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}(或者更好的是,一个模板系统)。