NAME
Web::Scraper::Filter - Base class for Web::Scraper filters
SYNOPSIS
package
Web::Scraper::Filter::YAML;
use
YAML ();
sub
filter {
my
(
$self
,
$value
) =
@_
;
YAML::Load(
$value
);
}
1;
use
Web::Scraper;
my
$scraper
= scraper {
process
".yaml-code"
,
data
=> [
'TEXT'
,
'YAML'
];
};
DESCRIPTION
Web::Scraper::Filter is a base class for text filters in Web::Scraper. You can create your own text filter by subclassing this module.
There are two ways to create and use your custom filter. If you name your filter Web::Scraper::Filter::Something, you just call:
process
$exp
,
$key
=> [
'TEXT'
,
'Something'
];
If you declare your filter under your own namespace, like 'MyApp::Filter::Foo',
process
$exp
,
$key
=> [
'TEXT'
,
'+MyApp::Filter::Foo'
];
You can also inline your filter function or regexp without creating a filter class:
process
$exp
,
$key
=> [
'TEXT'
,
sub
{ s/foo/bar/ } ];
process
$exp
,
$key
=> [
'TEXT'
,
qr/Price: (\d+)/
];
process
$exp
,
$key
=> [
'TEXT'
,
qr/(?<name>\w+): (?<value>\w+)/
];
Note that this function munges $_
and returns the count of replacement. Filter code special cases if the return value of the callback is number and $_
value is updated.
You can, of course, stack filters like:
process
$exp
,
$key
=> [
'@href'
,
'Foo'
,
'+MyApp::Filter::Bar'
, \
&baz
];
AUTHOR
Tatsuhiko Miyagawa