Използвам HTML :: TreeBuilder да разберем малко HTML.
Можете ли да посочите няколко класа в „погледни надолу"рутина?
Защото в позиция при търсене чрез HTML, използвайки-
for ( $tree->look_down( "class" => "postbody"))
Аз също трябваше да търся допълнителен клас "postprofile"
в същия цикъл.
Има ли начин да направите това, без да се налага да използвате нов -for ( $tree->look_down( "class" => "postprofile" ))
Тъй като това връща 2 серии резултати, докато искам само един обединен набор.
Опитах да използвам - for ( $tree->look_down( "class" => "postbody||postprofile"))
Това обаче не даде резултат,
Благодаря ви предварително.
Отговори:
9 за отговор № 1Опитайте да използвате шаблон вместо низ, т.е.
$tree->look_down( "class" => qr/^(?:postbody|postprofile)$/)
1 за отговор № 2
Джамбо, не се опитвам да бъда груб, но моля, прочетете ръководството. Добавих линкове към вашия въпрос.
Предполагам, че не сте чели документите, защото не сте успели да ги намерите. Нека адрес че проблем:
Как да намерите нужните ви документи
Онлайн:
search.cpan.org е основен уебсайт, използван за търсене на CPAN модули и тяхната документация. Много неща могат да бъдат намерени там.
perldoc.perl.org разполага с пълната документация за доставка онлайн за няколко скорошни версии на Perl.
Командна линия:
perldoc
показва съдържанието, съдържащо различни раздели на документацията, които можете да разгледате.perldoc -f function
е бърз начин за търсене на perlfunc и преглед на информацията само за една функция. Това е супер удобна бърза справка.perldoc Module::Name::Here
ще ви покаже документация на модул.perldoc perlpod
е извадка от четене на раздел от документите, в случая статията за POD форматирането.
Кое нещо да прочета?
Всичко това е страхотно, но как да разберете къде да търсите? Искам да кажа, че имам това нещо, наречено "look_down", което използвам. Къде са документите?
В този случай можете да видите, че „look_down“ винаги се нарича така $somevar->look_down(blarg)
, Намерете къде $somevar
идва от. Какъв предмет е? Най-лошият случай, открихте, че е резултат от някакво друго обаждане, сега трябва да намерите документите за ТОЗИ разговор и да видите какво е върнато. Но стъпките са същите. Рекурсивно натиснете през. В крайна сметка ще стигнете my $tree = HTML::TreeBuilder->new_from_content()
Или нещо такова. Сега можете да прочетете new_from_content
документи в HTML :: TreeBuilder. Ей, ние получаваме HTML :: дърво обект, който е подклас на HTML :: елемент! Така че проверяваме и двата класа. Кой, look_down е в HTML :: Element.
Това е малко по-сложно, ако имате подпрограми, които се импортират от други модули. Надяваме се, че авторът на вашия код е бил достатъчно внимателен, за да изрично изброи откъде идват неговите рутинни процедури:
use Some::Module qw( useful_sub confusing_sub );
Това означава, че useful_sub
и confusing_sub
идвам от Some::Module
;
Ако нямате късмет, вашият автор е писал само use Some::Module;
което означава, че получавате целия износ по подразбиране. Което означава, че трябва да прочетете документите, за да разберете какво е било внесено.
Заради поддръжката, можете да намалите този кошмар, като винаги посочвате какви подпрограми импортирате от дадена функция. Ако искате да импортирате НИЩО, можете да зададете това като: use Some::Module ();
Когато търсите обикновени под-имена, помага да запомните, че те може да са действителни функции. Така че не забравяйте да търсите Perldoc.
В заключение, надявам се да намерите това полезно. R-ing TFM е невероятно мощна техника и научаването как да намерите подходящи документи е скритото умение, което отключва силата. Perl има много документи, през които може да се преодолее, и може да бъде плашещо, когато не знаеш къде да търсиш.