Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > перебор хэш массова в объекте


Автор: gcc 27.12.2008, 08:24
Код

my %p = $query->Vars;


в %p  пепедается массив fDomains из html, он есть, если посмотреть через Data::Dumper

Код

dumper ($self->{p}->{fDomains});


Код

'fDomains' => '2sdfsdf3sdf.org.ua�3dfgsdfdg.org.ua'


данный код не работает (элементы не выводяться и exit не срабатывает):
Код

foreach $item (@{$self->{p}->{fDomains}}) { 
             print $item;
             exit;
}



найти как сделать не смог
надо что-то добавить?

Автор: gcc 27.12.2008, 09:55
Код

�


что это за знак, по-моиму он не должен быть?

Автор: KSURi 27.12.2008, 11:09
perldoc -f split

Автор: gcc 27.12.2008, 11:23
спасибо, нашел только что

Цитата

Создавть хеш массивов, где ключем будет буква, а значением будет массив из строк спецзаданий.


Код

for $k(sort keys %ha){print "<a href=\"#$k\">$k[/url] "}


Цитата

Вывести линейку начальных букв, по которым будут сортироваться результаты.


Код

for $k(sort keys %ha){
  print "<a name=\"$k\"> [/url]
\n";
  foreach $im(@{$ha{$k}}){
    ($autor, $pesniya, $position)=split /#/, $im;
    print "$autor, $pesniya, $position
\n";
  }
}


Цитата

Вывести массивы, ассоциированные со значениями ключей букв. @{$ha{$k}} - просто обычный массив, доступ к которому зависит от значения ключа $k. Каждый элемент массива стостоит из строки с разделителями #, по нему и разделяет функция split ($autor, $pesniya, $position)=split /#/, $im;




поробовал сделать так:
Код

              my $item;
                foreach $item (@{$self->{p}->{fDomains}}) { 
               my ($autor)=split /#/, $item;
               print $autor;
 
            # print $item;
             exit;

           
тоже самое не работает, то есть exit не срабатывает

так, тоже не работает:
Код

             for $self->{p}->{fDomains} (sort keys $self->{p}) {
              my $item;
                foreach $item (@{$self->{p}->{fDomains}}) { 
               my ($autor)=split /#/, $item;
               print $autor;
              # print $item;
             exit;


подправте как сделать?

Добавлено @ 11:24
Цитата(KSURi @ 27.12.2008,  11:09)
perldoc -f split

какую переменную надо ставить в split? если внутри блока for и foreach ничего не видно? даже exit не рабатывает...
Код

    ($autor,)=split /#/, $im;



Автор: gcc 27.12.2008, 11:40
а что это за знак �?


Код

               my ($autor) = split /�/, @{$self->{p}->{fDomains}};
               print $autor;
               exit;




Код

               my ($autor) = split /#/, @{$self->{p}->{fDomains}};
               print $autor;
               exit;


вывод:
Код

0


Код

print join '', @{$self->{p}->{fDomains}};


не выводиться


Автор: gcc 27.12.2008, 13:26
Код

@foo = split("\0",$params->{'foo'});

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)