я використовую 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 :: Tree, який є підкласом HTML :: Element! Тож ми перевіряємо обидва класи. Ого, 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 є маса документів, через які можна пробратися, і це може залякати, коли ви не знаєте, де шукати.