Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation

Re: Style in CGI Header

by frozenwithjoy (Priest)
on Sep 30, 2014 at 04:15 UTC ( #1102410=note: print w/replies, xml ) Need Help??

in reply to Style in CGI Header

Disclaimer: I've never used

The snippet 'src' => [ $_css_path, $_css_path2 ] is using an anonymous array, whereas 'src' => @whatever is using a normal array. Perhaps it will work if you use an array reference to an anonymous array like this:

$whatever = [ $_css_path, $_css_path2 ]; -style => { -code => $page_style, src => $whatever }, #....

For the second part of your question, new paths can be pushed with:

push @{ $whatever }, $_css_path3;

Of course, this will need to be done before print start_html();

Replies are listed 'Best First'.
Re^2: Style in CGI Header
by Anonymous Monk on Sep 30, 2014 at 23:00 UTC
    So then would this work? I'm in a live environment, so I cannot just test it, it may break if I do it live...

    my @cssFiles = (); push(@cssFiles, {'src' => "$_css_path"}); push(@cssFiles, {'src' => "$_css_path2"}); # Then in the start_html() this line: -style => {-code=> "$page_style", 'src'=>@cssFiles},
    is that how it would work? It does not seem so, because the array has src = and then the -style field has 'src' = seems like I have it wrong.

    Can you tell me how to do that right?


      There are some kinds of changes where you won't know if they work until you try it on a test system... or in this case a live system... this isn't one of them. CGI is (still) in the Perl core, so this one is particularly easy to test locally.

      use CGI ':standard'; my @cssFiles = ("src1"); push @cssFiles, "src2"; print start_html(-style=>{-code=>"code",-src=>\@cssFiles}); __END__ ... <link rel="stylesheet" type="text/css" href="src1" /> <link rel="stylesheet" type="text/css" href="src2" /> <style type="text/css"> <!--/* <![CDATA[ */ code /* ]]> */--> </style> ...

      So that's a yes, frozenwithjoy's suggestion should work, provided you use an array reference (-src=>\@cssFiles, not -src=>@cssFiles).

      If you had a test system, even if it's not an exact mirror of the live system but at least can execute your code, may have saved you the ~20 hours wait on a solution...

      Changing your code to follow my earlier suggestion would give something like this:

      my $cssFiles = []; push @{$cssFiles}, $_css_path; push @{$cssFiles}, $_css_path2; # Then in the start_html() this line: -style => { -code => $page_style, -src => $cssFiles },

      If you wanted to use an array instead of an array ref, you could try this:

      my @cssFiles; push @cssFiles, $_css_path; push @cssFiles, $_css_path2; # Then in the start_html() this line: -style => { -code => $page_style, -src => \@cssFiles },

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1102410]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (5)
As of 2023-03-26 08:54 GMT
Find Nodes?
    Voting Booth?
    Which type of climate do you prefer to live in?

    Results (63 votes). Check out past polls.