Perl CGI. Могу ли я быть уверен в порядке использования тегов <style>? - PullRequest
2 голосов
/ 09 декабря 2010

Если я создаю две строки стиля, например,

my $style =<<'EOF';  
<-- @import url("foo.css"); -->  
EOF  

my $style2 =<<'EOF';  
<-- #thing_in_foo.css_that_I_want_to_override a {attributes;} -->  
EOF  

И я хочу включить их в start_html следующим образом:

print $q->start_html({  
  -style => [
             {-code=>$style},  
             {-code=>$style2}
]);  

Или что-то подобное.
Долгосрочной целью является создание подкласса модуля CGI с беспорядком значений по умолчанию. Я хочу позволить пользователю передавать некоторые дополнительные хеш-ссылки на объект, например, так:

my $q = subCGI->new({-code=>$style2});

Объект будет встраивать параметры start_html, и я хотел бы поместить эту ссылку на хэш в массив -style. Я планирую иметь некоторые уже там; намерение состоит в том, чтобы пользователь передал любой css в параметре new (), так что он будет каскадным по умолчанию.

Надеюсь, это имеет смысл.

1 Ответ

3 голосов
/ 09 декабря 2010

Любые последующие добавления к хешу с использованием того же ключа, который использовался ранее, всегда будут перезаписывать первое.То есть

my %hash = (
     key => "value 1",
     key => "value 2",
);

... будет всегда давать ключ со значением "значение 2", а не "значение 1".

Это довольно частоТехника, чтобы использовать это, чтобы разрешить необязательные переопределения, например:

sub wrapper_around_something_common
{
     # get optional options from the caller
     my %options = @_;

     some_other_function(
         key_1 => 'some default',
         key_2 => 'another default',
         %options,      # and override with any options provided by user
     )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...