/ / Вкажіть кілька класів у HTML :: Елемент look_down підпрограма Perl? - perl, клас, for-loop, html-дерево

Вкажіть декілька класів у HTML :: Елемент look_down підпрограма Perl? - perl, class, for-loop, html-дерево

я використовую 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 є маса документів, через які можна пробратися, і це може залякати, коли ви не знаєте, де шукати.