Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Perl: Проверка наличия значения у ключа  [new]
Zankoku
Member

Откуда:
Сообщений: 9
Добрый вечер, господа. Вопрос на миллион очков:
foreach (sort (keys %hash)) {
  say qq(<ul><h3>$_</h3>); #вывод ключей хэша (заголовков списка)
   foreach ($hash{$_}) {
    foreach (@$_) {
      say qq(<li><h5>"@$_"</h5></li>);
    }
    say br();
   }
}

Логично не выводить в заголовок списка если в нем нет элементов.
Как проверить наличие пары у ключа в районе комментария?
20 янв 19, 20:59    [21789822]     Ответить | Цитировать Сообщить модератору
 Re: Perl: Проверка наличия значения у ключа  [new]
volodin661
Member

Откуда: Внутренняя Монголия
Сообщений: 438
да хоть так:

for (sort keys %hash ) {
    next if not $hash{$_};

    say qq(<ul><h3>$_</h3>); #вывод ключей хэша (заголовков списка)
    for ( $hash{$_}) {
        ...
    }
}
21 янв 19, 03:45    [21789930]     Ответить | Цитировать Сообщить модератору
 Re: Perl: Проверка наличия значения у ключа  [new]
Zankoku
Member

Откуда:
Сообщений: 9
volodin661
да хоть так:

for (sort keys %hash ) {
    next if not $hash{$_};

    say qq(<ul><h3>$_</h3>); #вывод ключей хэша (заголовков списка)
    for ( $hash{$_}) {
        ...
    }
}


Не, не катит.
next if not $hash{$_};
^ проверяет наличие ключа. А мне нужно проверить наличие значения у этого ключа.

P.S. пробовал я так (почти так, подробнее в спойлере)
+
foreach (sort (keys %hash)) {
  
if ($hash{$_}){
  say qq(<ul><h3>$_</h3>);
}
  foreach ($hash{$_}) {
    foreach (@$_) {
      print qq(<li><h5>"@$_"</h5></li>);
    }
    say br();
    }
}
21 янв 19, 07:54    [21789954]     Ответить | Цитировать Сообщить модератору
 Re: Perl: Проверка наличия значения у ключа  [new]
volodin661
Member

Откуда: Внутренняя Монголия
Сообщений: 438
Zankoku,
может у тебя какой-то другой Perl ?

#!/usr/bin/env perl -l

$hash{aaa} = undef;

print "Key exists" if exists $h{aaa};
print "No values" if not $h{aaa};


Output:
Key exists
No values
21 янв 19, 17:51    [21790477]     Ответить | Цитировать Сообщить модератору
 Re: Perl: Проверка наличия значения у ключа  [new]
volodin661
Member

Откуда: Внутренняя Монголия
Сообщений: 438
опечатка. в последних двух строчках не $h{aaa}, а $hash{aaa}.
21 янв 19, 17:53    [21790481]     Ответить | Цитировать Сообщить модератору
 Re: Perl: Проверка наличия значения у ключа  [new]
Zankoku
Member

Откуда:
Сообщений: 9
volodin661
Zankoku,
может у тебя какой-то другой Perl ?

#!/usr/bin/env perl -l

$hash{aaa} = undef;

print "Key exists" if exists $h{aaa};
print "No values" if not $h{aaa};


Output:
Key exists
No values


Код:
+

for (sort (keys %hash)) {
  next if not $hash{$_};
  say qq(<ul><h3>$_</h3>\n);

  for ($hash{$_}) {
    for (@$_) {
      print qq(<li><h5>@$_</h5></li>\n);
    }
    say br();
   
  }
}



Вывод:
+
<ul><h3>Не отдел</h3>

<li><h5>Бух Валентина Валентинова</h5></li>
<br />
<ul><h3>Отдел</h3>
<br />
<ul><h3>Отдел отделов</h3>
<li><h5>Дворник Иван Иванов</h5></li>
<li><h5>Дворник Петр Петров</h5></li>
<li><h5>Плотник Федот Федотов</h5></li>
<br />


DDP:
+

{
'Не отдел' [
[0] [
[0] "Бух",
[1] "Валентина",
[2] "Валентинова"
]
],
Отдел [],
'Отдел отделов' [
[0] [
[0] "Дворник",
[1] "Иван",
[2] "Иванов"
],
[1] [
[0] "Дворник",
[1] "Петр",
[2] "Петров"
],
[2] [
[0] "Плотник",
[1] "Федот",
[2] "Федотов"
]
]
}


в чем косяк?)
21 янв 19, 20:09    [21790592]     Ответить | Цитировать Сообщить модератору
 Re: Perl: Проверка наличия значения у ключа  [new]
volodin661
Member

Откуда: Внутренняя Монголия
Сообщений: 438
Zankoku, пустой анонимный массив проверяется так:

if not ~~@ {$h{aa}}


назову этот оператор ~~@ жизнеутверждающе: 'проникновение сперматозоидов в яйцеклетку'
22 янв 19, 03:30    [21790722]     Ответить | Цитировать Сообщить модератору
 Re: Perl: Проверка наличия значения у ключа  [new]
Zankoku
Member

Откуда:
Сообщений: 9
volodin661
Zankoku, пустой анонимный массив проверяется так:

if not ~~@ {$h{aa}}


назову этот оператор ~~@ жизнеутверждающе: 'проникновение сперматозоидов в яйцеклетку'


Позвольте процитировать классика: "Ура! Заработало!" (С) Кот Матроскин.
Спасибо большое! Лайков Вам, репостов!
22 янв 19, 20:03    [21791536]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить